public async Task <IActionResult> OnDelete() { List <Employee_Dto> entitites = JsonSerializer.Deserialize <List <Employee_Dto> >(Request.Form["info"]); try { for (int i = 0; i < entitites.Count; i++) { Employee_Dto entity = entitites[i]; //await BusinessUnitTemplatesAppService.Repository.DeleteAsync(leaveRequest.); await employeeAppService.DeleteAsync(entity.Id); if (AuditingManager.Current != null) { EntityChangeInfo entityChangeInfo = new EntityChangeInfo(); entityChangeInfo.EntityId = entity.Id.ToString(); entityChangeInfo.EntityTenantId = entity.TenantId; entityChangeInfo.ChangeTime = DateTime.Now; entityChangeInfo.ChangeType = EntityChangeType.Deleted; entityChangeInfo.EntityTypeFullName = typeof(Employee).FullName; AuditingManager.Current.Log.EntityChanges.Add(entityChangeInfo); } } return(StatusCode(200)); } catch (Exception ex) { return(StatusCode(500)); } }
public IActionResult OnGet(int P1Year, int P1Month, int P2Year, int P2Month, bool isAjax) { bool isOnGet = P1Year != 0 && P2Year != 0; if (!isOnGet) { return(Page()); } try { bool isPeriodValid = true; Payrun_Dto fromPayrun = null; Payrun_Dto toPayrun = null; fromPayrun = ObjectMapper.Map <Payrun, Payrun_Dto>(PayrunAppService.Repository.WithDetails().SingleOrDefault(x => x.Year == P1Year && x.Month == P1Month)); toPayrun = ObjectMapper.Map <Payrun, Payrun_Dto>(PayrunAppService.Repository.WithDetails().SingleOrDefault(x => x.Year == P2Year && x.Month == P2Month)); if (fromPayrun == null || toPayrun == null) { isPeriodValid = false; } if (!isPeriodValid) { return(BadRequest(new { type = "period" })); } List <dynamic> payrunReconSummaryDynamicDS = new List <dynamic>(); if (fromPayrun != null && toPayrun != null) { Allowances = DicValuesRepo.WithDetails(x => x.ValueType).Where(x => x.ValueType.ValueTypeFor == ValueTypeModules.AllowanceType).ToList(); List <PayrunDetail_Dto> fromPDetails = fromPayrun.PayrunDetails.ToList(); List <PayrunDetail_Dto> toPDetails = toPayrun.PayrunDetails.ToList(); List <(PayrunDetail_Dto fromPDetail, PayrunDetail_Dto toPDetail)> payrunReconDetails = new List <(PayrunDetail_Dto fromPDetail, PayrunDetail_Dto toPDetail)>(); var toExplicits = toPDetails.Where(x => !fromPDetails.Any(x1 => x1.EmployeeId == x.EmployeeId)) .Select(x => { return((PayrunDetail_Dto)null, x); }); payrunReconDetails.AddRange(toExplicits); payrunReconDetails.AddRange(fromPDetails.Select(x => { if (toPDetails.Exists(x1 => x1.EmployeeId == x.EmployeeId)) { return(x, toPDetails.Single(x1 => x1.EmployeeId == x.EmployeeId)); } else { return(x, null); } })); for (int i = 0; i < payrunReconDetails.Count; i++) { var reconDetail = payrunReconDetails[i]; PayrunDetail_Dto fromD = reconDetail.fromPDetail; PayrunDetail_Dto toD = reconDetail.toPDetail; dynamic payrunReconEmpDDSRow = new ExpandoObject(); if (fromD != null || toD != null) { bool isFromD = fromD != null; bool isToD = toD != null; bool both = isToD && isFromD; Employee_Dto emp = isFromD ? fromD.Employee : toD.Employee; payrunReconEmpDDSRow.getCompanyName = emp.Department.Company.CompanyName; payrunReconEmpDDSRow.getCompanyAddress = emp.Department.Company.CompanyLocations[0].Location.LocationName; payrunReconEmpDDSRow.getEmployeeReferenceId = emp.GetReferenceId; payrunReconEmpDDSRow.getEmployeeName = emp.Name; payrunReconEmpDDSRow.getEmployeeDepartmentName = emp.Department.Name; payrunReconEmpDDSRow.getEmployeePositionTitle = emp.Position.Title; if (both) { List <(PayrunAllowanceSummary_Dto fromAllowance, PayrunAllowanceSummary_Dto toAllowance)> allowancesReconDetails = new List <(PayrunAllowanceSummary_Dto fromAllowance, PayrunAllowanceSummary_Dto toAllowance)>(); var toAllowancesExplicits = toD.PayrunAllowancesSummaries.Where(x => !fromD.PayrunAllowancesSummaries.Any(x1 => x1.AllowanceTypeId == x.AllowanceTypeId)) .Select(x => { return((PayrunAllowanceSummary_Dto)null, x); }); allowancesReconDetails.AddRange(toAllowancesExplicits); allowancesReconDetails.AddRange(fromD.PayrunAllowancesSummaries.Select(x => { if (toD.PayrunAllowancesSummaries.Any(x1 => x1.AllowanceTypeId == x.AllowanceTypeId)) { return(x, toD.PayrunAllowancesSummaries.First(x1 => x1.AllowanceTypeId == x.AllowanceTypeId)); } else { return(x, null); } })); decimal bsDiffValue = (toD.BasicSalary - fromD.BasicSalary); string bsDiff = bsDiffValue < 0? $"({Math.Abs(bsDiffValue).ToString("N2")})" : bsDiffValue.ToString("N2"); DynamicHelper.AddProperty(payrunReconEmpDDSRow, $"basicSalary", bsDiff); if (bsDiffValue > 0) { payrunReconEmpDDSRow.category = "Increment"; var cloned = JsonConvert.DeserializeObject <dynamic>(JsonConvert.SerializeObject(payrunReconEmpDDSRow)); payrunReconSummaryDynamicDS.Add(cloned);; payrunReconEmpDDSRow.category = ""; } else if (bsDiffValue < 0) { payrunReconEmpDDSRow.category = "Deduction"; var cloned = JsonConvert.DeserializeObject <dynamic>(JsonConvert.SerializeObject(payrunReconEmpDDSRow)); payrunReconSummaryDynamicDS.Add(cloned); payrunReconEmpDDSRow.category = ""; } payrunReconEmpDDSRow.basicSalary = "—"; for (int j = 0; j < allowancesReconDetails.Count; j++) { PayrunAllowanceSummary_Dto fromAllowance = allowancesReconDetails[j].fromAllowance; PayrunAllowanceSummary_Dto toAllowance = allowancesReconDetails[j].toAllowance; bool isFromDAllowance = fromAllowance != null; bool isToDAllowance = toAllowance != null; bool bothAllowance = isFromDAllowance && isToDAllowance; if (bothAllowance) { DictionaryValue_Dto allowance = fromAllowance.AllowanceType; string camelCaseName = allowance.Value; camelCaseName = camelCaseName.Replace(" ", ""); camelCaseName = char.ToLowerInvariant(camelCaseName[0]) + camelCaseName.Substring(1); double difference = (double)(toAllowance.Value - fromAllowance.Value); string difValue = difference >= 0 ? difference.ToString("N2") : $"({Math.Abs(difference).ToString("N2")})"; DynamicHelper.AddProperty(payrunReconEmpDDSRow, $"{camelCaseName}_Value", difValue); if (difference > 0) { payrunReconEmpDDSRow.category = $"{allowance.Value} Increased"; var cloned = JsonConvert.DeserializeObject <dynamic>(JsonConvert.SerializeObject(payrunReconEmpDDSRow)); payrunReconSummaryDynamicDS.Add(cloned); DynamicHelper.RemoveProperty(payrunReconEmpDDSRow, $"{camelCaseName}_Value"); payrunReconEmpDDSRow.category = ""; } else if (difference < 0) { payrunReconEmpDDSRow.category = $"{allowance.Value} Decreased"; var cloned = JsonConvert.DeserializeObject <dynamic>(JsonConvert.SerializeObject(payrunReconEmpDDSRow)); payrunReconSummaryDynamicDS.Add(cloned); DynamicHelper.RemoveProperty(payrunReconEmpDDSRow, $"{camelCaseName}_Value"); payrunReconEmpDDSRow.category = ""; } } else { if (isFromDAllowance) { DictionaryValue_Dto allowance = fromAllowance.AllowanceType; string camelCaseName = allowance.Value; camelCaseName = camelCaseName.Replace(" ", ""); camelCaseName = char.ToLowerInvariant(camelCaseName[0]) + camelCaseName.Substring(1); double allowanceValue = (double)fromAllowance.Value; string value = $"({allowanceValue.ToString("N2")})"; DynamicHelper.AddProperty(payrunReconEmpDDSRow, $"{camelCaseName}_Value", value); payrunReconEmpDDSRow.category = $"{allowance.Value} Removed"; var cloned = JsonConvert.DeserializeObject <dynamic>(JsonConvert.SerializeObject(payrunReconEmpDDSRow)); payrunReconSummaryDynamicDS.Add(cloned); DynamicHelper.RemoveProperty(payrunReconEmpDDSRow, $"{camelCaseName}_Value"); payrunReconEmpDDSRow.category = ""; } else if (isToDAllowance) { DictionaryValue_Dto allowance = toAllowance.AllowanceType; string camelCaseName = allowance.Value; camelCaseName = camelCaseName.Replace(" ", ""); camelCaseName = char.ToLowerInvariant(camelCaseName[0]) + camelCaseName.Substring(1); double allowanceValue = (double)toAllowance.Value; string value = allowanceValue >= 0 ? allowanceValue.ToString("N2") : $"({allowanceValue.ToString("N2")})"; DynamicHelper.AddProperty(payrunReconEmpDDSRow, $"{camelCaseName}_Value", value); payrunReconEmpDDSRow.category = $"{allowance.Value} Added"; var cloned = JsonConvert.DeserializeObject <dynamic>(JsonConvert.SerializeObject(payrunReconEmpDDSRow)); payrunReconSummaryDynamicDS.Add(cloned); DynamicHelper.RemoveProperty(payrunReconEmpDDSRow, $"{camelCaseName}_Value"); payrunReconEmpDDSRow.category = ""; } } } payrunReconEmpDDSRow.grossEarnings = toD.GrossEarnings - fromD.GrossEarnings; decimal gosiDiffValue = (toD.GOSIAmount - fromD.GOSIAmount); payrunReconEmpDDSRow.gosiValue = gosiDiffValue > 0? gosiDiffValue.ToString("N2") : $"({Math.Abs(gosiDiffValue).ToString("N2")})"; if (gosiDiffValue != 0) { payrunReconEmpDDSRow.category = gosiDiffValue > 0? "GOSI Increased" : "GOSI Decreased"; var cloned = JsonConvert.DeserializeObject <dynamic>(JsonConvert.SerializeObject(payrunReconEmpDDSRow)); payrunReconSummaryDynamicDS.Add(cloned); payrunReconEmpDDSRow.gosiValue = "—"; payrunReconEmpDDSRow.category = ""; } decimal loansDiffValue = (toD.Loan - fromD.Loan); payrunReconEmpDDSRow.loansValue = loansDiffValue > 0? loansDiffValue.ToString("N2") : $"({Math.Abs(loansDiffValue).ToString("N2")})"; if (loansDiffValue != 0) { payrunReconEmpDDSRow.category = loansDiffValue > 0? "Loans Increased" : "Loans Decreased"; var cloned = JsonConvert.DeserializeObject <dynamic>(JsonConvert.SerializeObject(payrunReconEmpDDSRow)); payrunReconSummaryDynamicDS.Add(cloned); payrunReconEmpDDSRow.gosiValue = "—"; payrunReconEmpDDSRow.category = ""; } decimal leavesDiffValue = (toD.Leaves - fromD.Leaves); payrunReconEmpDDSRow.leavesValue = leavesDiffValue > 0? leavesDiffValue.ToString("N2") : $"({Math.Abs(leavesDiffValue).ToString("N2")})"; if (loansDiffValue != 0) { payrunReconEmpDDSRow.category = leavesDiffValue > 0? "Leaves Increased" : "Leaves Decreased"; var cloned = JsonConvert.DeserializeObject <dynamic>(JsonConvert.SerializeObject(payrunReconEmpDDSRow)); payrunReconSummaryDynamicDS.Add(cloned); payrunReconEmpDDSRow.gosiValue = "—"; payrunReconEmpDDSRow.category = ""; } payrunReconEmpDDSRow.grossDeduction = toD.GrossDeductions - fromD.GrossDeductions; payrunReconEmpDDSRow.netAmount = (payrunReconEmpDDSRow.grossEarnings - payrunReconEmpDDSRow.grossDeduction).ToString("N2"); } else { if (isFromD) { string bs = fromD.BasicSalary.ToString("N2"); DynamicHelper.AddProperty(payrunReconEmpDDSRow, $"basicSalary", bs); var fromAllowances = fromD.PayrunAllowancesSummaries.ToList(); for (int j = 0; j < fromAllowances.Count; j++) { PayrunAllowanceSummary_Dto fromAllowance = fromAllowances[i]; DictionaryValue_Dto allowance = fromAllowance.AllowanceType; string camelCaseName = allowance.Value; camelCaseName = camelCaseName.Replace(" ", ""); camelCaseName = char.ToLowerInvariant(camelCaseName[0]) + camelCaseName.Substring(1); double allowanceValue = (double)fromAllowance.Value; string value = allowanceValue > 0 ? allowanceValue.ToString("N2") : $"({allowanceValue.ToString("N2")})"; DynamicHelper.AddProperty(payrunReconEmpDDSRow, $"{camelCaseName}_Value", value); } payrunReconEmpDDSRow.grossEarnings = fromD.GrossEarnings; payrunReconEmpDDSRow.gosiValue = fromD.GOSIAmount; payrunReconEmpDDSRow.loansValue = fromD.Loan; payrunReconEmpDDSRow.leavesValue = fromD.Leaves; payrunReconEmpDDSRow.grossDeduction = fromD.GrossDeductions; payrunReconEmpDDSRow.netAmount = (payrunReconEmpDDSRow.grossEarnings - payrunReconEmpDDSRow.grossDeduction).ToString("N2"); payrunReconEmpDDSRow.category = "Left"; payrunReconSummaryDynamicDS.Add(payrunReconEmpDDSRow); payrunReconEmpDDSRow.category = ""; } else if (isToD) { string bs = toD.BasicSalary.ToString("N2"); DynamicHelper.AddProperty(payrunReconEmpDDSRow, $"basicSalary", bs); var toAllowances = toD.PayrunAllowancesSummaries.ToList(); for (int j = 0; j < toAllowances.Count; j++) { PayrunAllowanceSummary_Dto toAllowance = toAllowances[i]; DictionaryValue_Dto allowance = toAllowance.AllowanceType; string camelCaseName = allowance.Value; camelCaseName = camelCaseName.Replace(" ", ""); camelCaseName = char.ToLowerInvariant(camelCaseName[0]) + camelCaseName.Substring(1); double allowanceValue = (double)toAllowance.Value; string value = allowanceValue > 0 ? allowanceValue.ToString("N2") : $"({allowanceValue.ToString("N2")})"; DynamicHelper.AddProperty(payrunReconEmpDDSRow, $"{camelCaseName}_Value", value); } payrunReconEmpDDSRow.grossEarnings = toD.GrossEarnings; payrunReconEmpDDSRow.gosiValue = toD.GOSIAmount; payrunReconEmpDDSRow.loansValue = toD.Loan; payrunReconEmpDDSRow.leavesValue = toD.Leaves; payrunReconEmpDDSRow.grossDeduction = toD.GrossDeductions; payrunReconEmpDDSRow.netAmount = (payrunReconEmpDDSRow.grossEarnings - payrunReconEmpDDSRow.grossDeduction).ToString("N2"); payrunReconEmpDDSRow.category = "New Employee"; payrunReconSummaryDynamicDS.Add(payrunReconEmpDDSRow); payrunReconEmpDDSRow.category = ""; } } } //if(payrunReconEmpDDSRow.netAmount != "0.00") // payrunReconSummaryDynamicDS.Add(payrunReconEmpDDSRow); } if (!isAjax) { ViewData["Payruns_DS"] = JsonSerializer.Serialize(payrunReconSummaryDynamicDS); return(Page()); } else { return(new JsonResult(payrunReconSummaryDynamicDS)); } } else { return(BadRequest(new { type = "payrun" })); } } catch (Exception ex) { return(BadRequest(new { type = "exception" })); } }
public async Task <ApprovalRouteTemplate> ProcessApprovalRoutesUpdate(ApprovalRouteViewModelBase VM, ApprovalRouteTemplate _approvalRouteTemplate) { ApprovalRouteTemplate resultApprovalRouteTemplate = _approvalRouteTemplate; List <ApprovalRouteVM> vmApprovalRouteTemplateItems = VM.ApprovalRoute; ApprovalRouteTemplate approvalRouteTemplate = _approvalRouteTemplate; List <ApprovalRouteTemplateItem> approvalRouteTemplateItems = approvalRouteTemplate.ApprovalRouteTemplateItems.ToList(); List <ApprovalRouteTemplateItem> toUpdateAPItems = new List <ApprovalRouteTemplateItem>(); List <TaskTemplateItem> toUpdateAPTaskItems = new List <TaskTemplateItem>(); List <ApprovalRouteTemplate> toDeleteApprovalRouteTemplates = new List <ApprovalRouteTemplate>(); List <ApprovalRouteTemplateItemEmployee> toDeleteAPEmployeeItems = new List <ApprovalRouteTemplateItemEmployee>(); List <TaskTemplate> toDeleteAPTaskTemplates = new List <TaskTemplate>(); List <TaskTemplateItem> toDeleteAPTaskItems = new List <TaskTemplateItem>(); List <TaskTemplateItemEmployee> toDeleteAPTaskEmployeeItems = new List <TaskTemplateItemEmployee>(); for (int i = 0; i < vmApprovalRouteTemplateItems.Count; i++) { ApprovalRouteVM cur = vmApprovalRouteTemplateItems[i]; //int curId = -1; //int.TryParse(cur.Id, out curId); if (!approvalRouteTemplateItems.Any(x => x.Id.ToString() == cur.Id)) { ApprovalRouteTemplateItem approvalRouteTemplateItem = new ApprovalRouteTemplateItem(); approvalRouteTemplateItem.Active = cur.Active; if (cur.IsDepartmentHead) { approvalRouteTemplateItem.IsDepartmentHead = true; } else if (cur.IsReportingTo) { approvalRouteTemplateItem.IsReportingTo = true; } else { approvalRouteTemplateItem.IsDepartmentHead = false; approvalRouteTemplateItem.IsReportingTo = false; approvalRouteTemplateItem.ApprovalRouteItemEmployees = new List <ApprovalRouteTemplateItemEmployee>(); for (int y = 0; y < cur.EmployeeIds.Length; y++) { ApprovalRouteTemplateItemEmployee approvalRouteTemplateItemEmployee = new ApprovalRouteTemplateItemEmployee(); approvalRouteTemplateItemEmployee.EmployeeId = cur.EmployeeIds[y].Value; approvalRouteTemplateItem.ApprovalRouteItemEmployees.Add(approvalRouteTemplateItemEmployee); } TaskTemplate apItemTaskTemplate = new TaskTemplate(); apItemTaskTemplate.TaskModule = TaskModule.LeaveRequest; apItemTaskTemplate.TaskTemplateItems = new List <TaskTemplateItem>(); for (int y = 0; y < cur.TaskTemplate.TaskTemplateItems.Count; y++) { LRTaskVM lRTaskVM = cur.TaskTemplate.TaskTemplateItems[y]; TaskTemplateItem taskTemplateItem = new TaskTemplateItem(); taskTemplateItem.Active = lRTaskVM.Active; taskTemplateItem.TaskDescription = lRTaskVM.TaskDescription; taskTemplateItem.TaskEmployees = new List <TaskTemplateItemEmployee>(); for (int z = 0; z < lRTaskVM.EmployeeIds.Length; z++) { TaskTemplateItemEmployee taskTemplateItemEmployee = new TaskTemplateItemEmployee(); taskTemplateItemEmployee.EmployeeId = lRTaskVM.EmployeeIds[z].Value; taskTemplateItem.TaskEmployees.Add(taskTemplateItemEmployee); } taskTemplateItem.RouteIndex = y + 1; taskTemplateItem.IsAny = lRTaskVM.IsAny; taskTemplateItem.NotifyEmployee = lRTaskVM.NotifyEmployee; apItemTaskTemplate.TaskTemplateItems.Add(taskTemplateItem); } approvalRouteTemplateItem.TaskTemplate = apItemTaskTemplate; } approvalRouteTemplateItem.RouteIndex = i + 1; approvalRouteTemplateItem.IsAny = cur.IsAny; approvalRouteTemplateItem.NotifyEmployee = cur.NotifyEmployee; approvalRouteTemplateItem.IsPoster = cur.IsPoster; resultApprovalRouteTemplate.ApprovalRouteTemplateItems.Add(approvalRouteTemplateItem); } else { resultApprovalRouteTemplate.ApprovalRouteModule = ApprovalRouteModule.LeaveRequest; ApprovalRouteTemplateItem item = resultApprovalRouteTemplate.ApprovalRouteTemplateItems.First(x => x.Id.ToString() == cur.Id); item.Active = cur.Active; item.RouteIndex = i + 1; item.IsAny = cur.IsAny; item.NotifyEmployee = cur.NotifyEmployee; item.IsPoster = cur.IsPoster; List <Employee_Dto> vmApprovalRouteEmployees = cur.ApprovalRouteItemEmployees.Select(x => x.Employee).ToList(); List <ApprovalRouteTemplateItemEmployee> approvalRouteEmployees = item.ApprovalRouteItemEmployees.ToList(); for (int j = 0; j < vmApprovalRouteEmployees.Count; j++) { Employee_Dto curVMEMployee = vmApprovalRouteEmployees[j]; if (!approvalRouteEmployees.Any(x => x.EmployeeId == curVMEMployee.Id) && curVMEMployee.Id != Guid.Empty) { ApprovalRouteTemplateItemEmployee approvalRouteTemplateItemEmployee = new ApprovalRouteTemplateItemEmployee(); approvalRouteTemplateItemEmployee.EmployeeId = curVMEMployee.Id; item.ApprovalRouteItemEmployees.Add(approvalRouteTemplateItemEmployee); } } for (int j = 0; j < approvalRouteEmployees.Count; j++) { ApprovalRouteTemplateItemEmployee curItemEmp = approvalRouteEmployees[j]; if (!cur.EmployeeIds.Any(x => x == curItemEmp.EmployeeId)) { item.ApprovalRouteItemEmployees.Remove(curItemEmp); toDeleteAPEmployeeItems.Add(curItemEmp); } //toDeleteAPEmployeeItems = new List<ApprovalRouteTemplateItemEmployee>(); } if (item.TaskTemplate != null) { TaskTemplate apItemTaskTemplate = item.TaskTemplate; apItemTaskTemplate.TaskModule = TaskModule.LeaveRequest; List <LRTaskVM> vmAPTaskTemplateItems = cur.TaskTemplate.TaskTemplateItems; List <TaskTemplateItem> apTaskTemplateItems = apItemTaskTemplate.TaskTemplateItems.ToList(); for (int y = 0; y < vmAPTaskTemplateItems.Count; y++) { LRTaskVM vmAPTaskTemplateItem = vmAPTaskTemplateItems[y]; int vmAPTaskTemplateItemId = -1; int.TryParse(vmAPTaskTemplateItem.Id, out vmAPTaskTemplateItemId); if (!apTaskTemplateItems.Any(x => x.Id == vmAPTaskTemplateItemId)) { TaskTemplateItem apTaskTemplateItem = new TaskTemplateItem(); apTaskTemplateItem.Active = vmAPTaskTemplateItem.Active; apTaskTemplateItem.TaskDescription = vmAPTaskTemplateItem.TaskDescription; apTaskTemplateItem.TaskEmployees = new List <TaskTemplateItemEmployee>(); for (int z = 0; z < vmAPTaskTemplateItem.EmployeeIds.Length; z++) { TaskTemplateItemEmployee taskTemplateItemEmployee = new TaskTemplateItemEmployee(); taskTemplateItemEmployee.EmployeeId = vmAPTaskTemplateItem.EmployeeIds[z].Value; } apTaskTemplateItem.RouteIndex = y + 1; apTaskTemplateItem.IsAny = vmAPTaskTemplateItem.IsAny; apTaskTemplateItem.NotifyEmployee = vmAPTaskTemplateItem.NotifyEmployee; item.TaskTemplate.TaskTemplateItems.Add(apTaskTemplateItem); } else { TaskTemplateItem taskTemplateItem = apTaskTemplateItems.First(x => x.Id == vmAPTaskTemplateItemId); taskTemplateItem.Active = vmAPTaskTemplateItem.Active; taskTemplateItem.TaskDescription = vmAPTaskTemplateItem.TaskDescription; taskTemplateItem.RouteIndex = y + 1; taskTemplateItem.IsAny = vmAPTaskTemplateItem.IsAny; taskTemplateItem.NotifyEmployee = vmAPTaskTemplateItem.NotifyEmployee; toUpdateAPTaskItems.Add(taskTemplateItem); } } if (vmAPTaskTemplateItems.Count == 0 && apTaskTemplateItems.Count > 0) { toDeleteAPTaskTemplates.Add(apItemTaskTemplate); } else { for (int y = 0; y < apTaskTemplateItems.Count; y++) { TaskTemplateItem curAPTaskItem = apTaskTemplateItems[y]; if (!vmAPTaskTemplateItems.Any(x => x.Id == curAPTaskItem.Id.ToString())) { item.TaskTemplate.TaskTemplateItems.Remove(curAPTaskItem); toDeleteAPTaskItems.Add(curAPTaskItem); } } } } toUpdateAPItems.Add(item); } } List <ApprovalRouteTemplateItem> toDeleteAPItems = new List <ApprovalRouteTemplateItem>(); if (vmApprovalRouteTemplateItems.Count == 0 && approvalRouteTemplateItems.Count > 0) { toDeleteApprovalRouteTemplates.Add(approvalRouteTemplate); } else { for (int i = 0; i < approvalRouteTemplateItems.Count; i++) { ApprovalRouteTemplateItem cur = approvalRouteTemplateItems[i]; if (!vmApprovalRouteTemplateItems.Any(x => x.Id == cur.Id.ToString())) { resultApprovalRouteTemplate.ApprovalRouteTemplateItems.Remove(cur); toDeleteAPTaskTemplates.Add(cur.TaskTemplate); toDeleteAPItems.Add(cur); } } } for (int i = 0; i < toDeleteAPEmployeeItems.Count; i++) { await ApprovalRouteTemplateItemsAppService.EmployeesRepository.DeleteAsync(x => x.EmployeeId == toDeleteAPEmployeeItems[i].EmployeeId); } for (int i = 0; i < toDeleteApprovalRouteTemplates.Count; i++) { await ApprovalRouteTemplatesAppService.Repository.DeleteAsync(toDeleteApprovalRouteTemplates[i].Id); } for (int i = 0; i < toDeleteAPTaskEmployeeItems.Count; i++) { await TaskTemplatesAppService.EmployeesRepository.DeleteAsync(x => x.EmployeeId == toDeleteAPTaskEmployeeItems[i].EmployeeId); } for (int i = 0; i < toDeleteAPTaskItems.Count; i++) { await TaskTemplatesAppService.ItemsRepository.DeleteAsync(toDeleteAPTaskItems[i]); } for (int i = 0; i < toUpdateAPTaskItems.Count; i++) { await TaskTemplatesAppService.ItemsRepository.UpdateAsync(toUpdateAPTaskItems[i]); } for (int i = 0; i < toDeleteAPItems.Count; i++) { await ApprovalRouteTemplateItemsAppService.Repository.DeleteAsync(toDeleteAPItems[i]); } for (int i = 0; i < toDeleteAPTaskTemplates.Count; i++) { await TaskTemplatesAppService.Repository.DeleteAsync(toDeleteAPTaskTemplates[i].Id); } for (int i = 0; i < toUpdateAPItems.Count; i++) { await ApprovalRouteTemplateItemsAppService.Repository.UpdateAsync(toUpdateAPItems[i]); } return(resultApprovalRouteTemplate); }