using _0_Framework.Application; using CompanyManagement.Infrastructure.Excel.SalaryAid; using CompanyManagment.App.Contracts.SalaryAid; using Microsoft.AspNetCore.Mvc; using Microsoft.Build.Evaluation; using ServiceHost.BaseControllers; namespace ServiceHost.Areas.Client.Controllers; public class SalaryAidController:ClientBaseController { private readonly ISalaryAidApplication _salaryAidApplication; private readonly long _workshopId; private readonly SalaryAidImportExcel _salaryAidImportExcel; public SalaryAidController(ISalaryAidApplication salaryAidApplication,IAuthHelper authHelper, SalaryAidImportExcel salaryAidImportExcel) { _salaryAidApplication = salaryAidApplication; _salaryAidImportExcel = salaryAidImportExcel; _workshopId = authHelper.GetWorkshopId(); } [HttpGet] public ActionResult GetList([FromQuery]SalaryAidSearchViewModel searchModel) { searchModel.WorkshopId = _workshopId; var result = _salaryAidApplication.GetSearchListAsGrouped(searchModel); return Ok(result); } [HttpPost] public ActionResult Create([FromBody]CreateSalaryAidRequest request) { var command = new CreateSalaryAidViewModel() { Amount = request.Amount.ToMoney(), CalculationMonth = request.CalculationMonth, CalculationYear = request.CalculationYear, EmployeeIds = request.EmployeeIds, WorkshopId = _workshopId, SalaryDateTime = request.SalaryDateTime, }; var result = _salaryAidApplication.Create(command); return result; } [HttpPut] public ActionResult Edit([FromBody]EditSalaryAidRequest request) { var command = new EditSalaryAidViewModel() { Id = request.Id, Amount = request.Amount.ToMoney(), CalculationMonth = request.CalculationMonth, CalculationYear = request.CalculationYear, SalaryDateTime = request.SalaryDateTime, WorkshopId = _workshopId, }; var result = _salaryAidApplication.Edit(command); return result; } [HttpGet("{id}")] public ActionResult EditDetails(long id) { var data = _salaryAidApplication.GetDetails(id); var res = new EditSalaryAidRequest() { Id = data.Id, Amount = data.Amount.MoneyToDouble(), CalculationMonth = data.CalculationMonth, CalculationYear = data.CalculationYear, SalaryDateTime = data.SalaryDateTime, }; return res; } [HttpDelete("{id:long}")] public ActionResult Delete(long id) { var result = _salaryAidApplication.Remove(id); return result; } [HttpPost("validate-excel")] public ActionResult> ValidateExcel([FromForm]ValidateExcelRequest request) { var validation = _salaryAidImportExcel.ReadAndValidateExcel(request.Excel, _workshopId); return validation; } [HttpPost("create-from-excel")] public async Task> OnPostCreateFromExcelData(List data) { var commands = data.Select(x => new CreateSalaryAidViewModel() { WorkshopId = x.WorkshopId, Amount = x.Amount.ToMoney(), EmployeeIds = [x.EmployeeId], SalaryDateTime = x.SalaryAidDateTime, NationalCode = x.NationalCode, CalculationMonth = x.calculationMonth, CalculationYear = x.calculationYear }).ToList(); OperationResult result = await _salaryAidApplication.CreateRangeAsync(commands); return new JsonResult(new { result.IsSuccedded, result.Message }); } } public class ValidateExcelRequest { public IFormFile Excel { get; set; } } public class EditSalaryAidRequest { public long Id { get; set; } public long EmployeeId { get; set; } public double Amount { get; set; } public string SalaryDateTime { get; set; } public int CalculationMonth { get; set; } public int CalculationYear { get; set; } } public class CreateSalaryAidRequest { public List EmployeeIds { get; set; } public double Amount { get; set; } public string SalaryDateTime { get; set; } public int CalculationMonth { get; set; } public int CalculationYear { get; set; } }