public PaySlipTemplateDetailResponse Get(int id) { var payrollQ = payrollDetailService.GetPayrollDetail().ToList(); var payrollQCheck = templateMappingService.GetPayrollByTemplateId(id).ToList(); var listparoll = payrollQ.Select(a => new PayrollDetailCheckResponse(a, mapper) { Check = payrollQCheck.Any(p => p.Id == a.Id) ? true : false }).ToList(); var entity = GetAsNoTracking(t => t.Id == id).First(); var result = new PaySlipTemplateDetailResponse(entity, mapper) { ListPayrollDetail = listparoll }; 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; } }