public ActionResult Apply(PayrollPeriodApply request) { try { #region check model //if (!ModelState.IsValid) //{ // var modelState = ModelState.FirstOrDefault(); // var error = modelState.Value.Errors.FirstOrDefault().ErrorMessage; // throw ApiException.Get(false, error, ResultEnum.ModelError, HttpStatusCode.BadRequest); //} #endregion payrollperiodService.ApplyPeriod(request); response = BaseResponse <dynamic> .Get(true, ConstantManager.SUCCESS, null, ResultEnum.Success); } catch (ApiException e) { result.StatusCode = e.StatusCode; response = BaseResponse <dynamic> .Get(e.Success, e.ErrorMessage, null, e.ErrorStatus); result = new JsonResult(response); } catch (Exception e) { result.StatusCode = (int)HttpStatusCode.InternalServerError; response = BaseResponse <dynamic> .Get(false, ConstantManager.Fail(e.ToString()), null, ResultEnum.InternalError); } result = new JsonResult(response); return(result); }
public void ApplyPeriod(PayrollPeriodApply request) { var trans = UnitOfWork.CreateTransac(); try { // get period by Id var entity = FirstOrDefaultE(r => r.Id == request.Id); // get template var template = paySlipTemplateService.GetEById(entity.PaySlipTemplateId.Value); var payrolDetails = templateDetailMappingService.GetPayrollByTemplateId(template.Id); if (request.GroupId.HasValue) { request.ListEmp = employeeService.GetByGroupId(request.GroupId.Value).Select(p => p.Id).ToList(); } foreach (var empId in request.ListEmp) { var employee = employeeService.FindEById(empId); if (employee == null) { throw new Exception(); } var paySlip = new PaySlip() { EmployeeId = empId, PayrollPeriodId = entity.Id, FromDate = entity.FromDate.Value, ToDate = entity.ToDate.Value, }; var listAllPaySlipAttribute = paySlipAttributeService.Get(); foreach (var attribute in listAllPaySlipAttribute) { switch (attribute.Code) { case "NBD": paySlip.PayslipAttributeMapping.Add(new PayslipAttributeMapping { PayslipId = paySlip.Id, AttributeId = attribute.Id, Value = entity.FromDate.Value.Day }); break; case "NKT": paySlip.PayslipAttributeMapping.Add(new PayslipAttributeMapping { PayslipId = paySlip.Id, AttributeId = attribute.Id, Value = entity.ToDate.Value.Day }); break; case "LCB": paySlip.PayslipAttributeMapping.Add(new PayslipAttributeMapping { PayslipId = paySlip.Id, AttributeId = attribute.Id, Value = 0 }); break; case "TKL": paySlip.PayslipAttributeMapping.Add(new PayslipAttributeMapping { PayslipId = paySlip.Id, AttributeId = attribute.Id, Value = entity.ToDate.Value.Month }); break; default: break; } } // create PaySlip var payslipId = paySlipService.Add(paySlip); // Create List PaySlipItem if (payrolDetails.Count() == 0) { throw new Exception(); } foreach (var payrollDetailSelected in payrolDetails) { var paySlipItem = new PaySlipItem() { Name = payrollDetailSelected.Name, PayrollDetailId = payrollDetailSelected.Id, PaySlipId = payslipId }; paySlipItemService.Add(paySlipItem); } } trans.Commit(); } catch (Exception e) { trans.Dispose(); throw e; } }