public SaveResponse Update(IUnitOfWork uow, SaveRequest <MyRow> request) { //BalanceRow balanceRow = new BalanceRow(); //BasicInsurancesRow insurancesRow = new BasicInsurancesRow(); //AllowancesRow allowancesRow = new AllowancesRow(); EmploeesStatusRow emploeesStatus = new EmploeesStatusRow(); int?UserID = request.Entity.UserId; var Enitiy = request.Entity; //balanceRow.UserId = UserID; //balanceRow.BaseSalary = request.Entity.BaseSalary; //balanceRow.GrossSalary = request.Entity.BaseSalary; //balanceRow.NetIncome = request.Entity.BaseSalary; //balanceRow.SalaryDate = DateTime.Now; //balanceRow.GrossSalary += Enitiy.Allowance; //balanceRow.NetIncome = balanceRow.GrossSalary - Enitiy.insurancesQ; //uow.Connection.Insert<BalanceRow>(balanceRow); //allowancesRow.AllowancesDescriptions = Enitiy.AllowanceDescriptions; //allowancesRow.Allowance = Enitiy.Allowance; //allowancesRow.AllowanceDate = DateTime.Now; //allowancesRow.UserId = UserID; //uow.Connection.Insert<AllowancesRow>(allowancesRow); //insurancesRow.Insurance = Enitiy.Insurance; //insurancesRow.InsurancesQ = Enitiy.insurancesQ; //insurancesRow.InsuranceDate = DateTime.Now; //insurancesRow.UserId = UserID; //uow.Connection.Insert<BasicInsurancesRow>(insurancesRow); emploeesStatus.UserId = UserID; emploeesStatus.EmploymentStatusID = 1; //Active in employmentStatus emploeesStatus.EmpSDate = DateTime.Now; uow.Connection.Insert <EmploeesStatusRow>(emploeesStatus); return(new MyRepository().Update(uow, request)); }
public SaveResponse Update(IUnitOfWork uow, SaveRequest <MyRow> request) { var UserID = int.Parse(request.EntityId.ToString()); #region Base salary var BaseSalary = uow.Connection.List <BalanceAccountRow>().LastOrDefault(x => x.User_ID == UserID); var OldBaseSalary = BaseSalary.BaseSalary; BaseSalary.BaseSalary = request.Entity.Balance; if (OldBaseSalary != request.Entity.Balance) { BaseSalary.NetIncome -= OldBaseSalary; BaseSalary.GrossSalary -= OldBaseSalary; BaseSalary.NetIncome += request.Entity.Balance; BaseSalary.GrossSalary += request.Entity.Balance; } uow.Connection.UpdateById <BalanceAccountRow>(BaseSalary); #endregion #region Allowance var AllowanceSummR = request.Entity.AlowancesList.Sum(x => x.Allowance); var AllowanceSumm = uow.Connection.List <AllowancesRow>().Where(x => x.UserId == UserID).Select(x => x.Allowance).Sum(); var AllAllowances = uow.Connection.List <AllowancesRow>().Where(x => x.UserId == UserID).Select(x => x.Id).ToList(); var AllowancesRID = request.Entity.AlowancesList.Select(x => x.Id).ToList(); var AllownancesID = request.Entity.AlowancesList.Select(x => x.Id).ToList(); List <int?> AllowancesIDDeleted = new List <int?>(); //Check If Delete Items foreach (var item in AllAllowances) { if (!AllowancesRID.Contains(item)) { AllowancesIDDeleted.Add(item); } else if (AllowancesRID.Count == 0) { AllowancesIDDeleted.AddRange(AllAllowances); } } if (AllowanceSummR != AllowanceSumm) { decimal?AllownancesSumDB = uow.Connection.List <AllowancesRow>().Where(x => AllownancesID.Contains(x.Id)).Sum(x => x.Allowance); var BalanceUserID = uow.Connection.List <BalanceAccountRow>().LastOrDefault(x => x.User_ID == UserID); BalanceUserID.NetIncome -= AllownancesSumDB; BalanceUserID.NetIncome += AllowanceSummR; BalanceUserID.GrossSalary -= AllownancesSumDB; BalanceUserID.GrossSalary += AllowanceSummR; // Deleted Check if (AllowancesIDDeleted.Count != 0) { var AllowancesIDDeletedSum = uow.Connection.List <AllowancesRow>().Where(x => AllowancesIDDeleted.Contains(x.Id)).Select(x => x.Allowance).Sum(); BalanceUserID.NetIncome -= AllowancesIDDeletedSum; BalanceUserID.GrossSalary -= AllowancesIDDeletedSum; } uow.Connection.UpdateById <BalanceAccountRow>(BalanceUserID); } #endregion #region Insurances var InsuranceSummR = request.Entity.InsuranceList.Sum(x => x.InsurancesQ); var InsurancesSumm = uow.Connection.List <BasicInsurancesRow>().Where(x => x.UserId == UserID).Select(x => x.InsurancesQ).Sum(); var AllInsurances = uow.Connection.List <BasicInsurancesRow>().Where(x => x.UserId == UserID).Select(x => x.Id).ToList(); var InsurancesRID = request.Entity.InsuranceList.Select(x => x.Id).ToList(); List <int?> InsurancesIDDeleted = new List <int?>(); //Check If Delete Items foreach (var item in AllInsurances) { if (!InsurancesRID.Contains(item)) { InsurancesIDDeleted.Add(item); } else if (InsurancesRID.Count == 0) { InsurancesIDDeleted.AddRange(AllInsurances); } } if (InsuranceSummR != InsurancesSumm) { decimal?InsurancesSumDB = uow.Connection.List <BasicInsurancesRow>().Where(x => InsurancesRID.Contains(x.Id)).Sum(x => x.InsurancesQ); var InsuranceBalanceUsersID = uow.Connection.List <BalanceAccountRow>().LastOrDefault(x => x.User_ID == UserID); var insuranceCount = uow.Connection.List <BasicInsurancesRow>().Where(x => x.UserId == UserID).Select(x => x.InsurancesQ).Count(); InsuranceBalanceUsersID.NetIncome += InsurancesSumDB; InsuranceBalanceUsersID.NetIncome -= InsuranceSummR; // Deleted Check if (InsurancesIDDeleted.Count != 0) { var InsurancesIDDeletedSum = uow.Connection.List <BasicInsurancesRow>().Where(x => InsurancesIDDeleted.Contains(x.Id)).Select(x => x.InsurancesQ).Sum(); InsuranceBalanceUsersID.NetIncome += InsurancesIDDeletedSum; } uow.Connection.UpdateById <BalanceAccountRow>(InsuranceBalanceUsersID); } #endregion #region EmployementStatus var EmploeesStatusRowdb = uow.Connection.List <EmploeesStatusRow>().FirstOrDefault(x => x.UserId == UserID); if (request.Entity.Status != UserStatusEnum.Employee) // Not Employee { UserStatusEnum? statusEnumR = request.Entity.Status; EmploeesStatusRow emploeesStatus = new EmploeesStatusRow(); emploeesStatus.UserId = request.Entity.UserId; emploeesStatus.EmpSDate = DateTime.Now; if (statusEnumR == UserStatusEnum.Died) { emploeesStatus.EmploymentStatusID = 3; request.Entity.IsActive = 0; } else if (statusEnumR == UserStatusEnum.Resignation) { emploeesStatus.EmploymentStatusID = 2; request.Entity.IsActive = 0; } uow.Connection.Insert <EmploeesStatusRow>(emploeesStatus); } else if (request.Entity.Status == UserStatusEnum.Employee) // lw el request == 1 { var EmploeesStatusRow = uow.Connection.List <EmploeesStatusRow>().LastOrDefault(x => x.UserId == UserID); var EmpStatus = EmploeesStatusRow.EmploymentStatusID.Value; if (EmpStatus != 1) { EmploeesStatusRow emploeesStatus = new EmploeesStatusRow(); emploeesStatus.UserId = request.Entity.UserId; emploeesStatus.EmpSDate = DateTime.Now; emploeesStatus.EmploymentStatusID = 1; request.Entity.IsActive = 1; uow.Connection.Insert <EmploeesStatusRow>(emploeesStatus); } } #endregion #region UserVacanciesLimit var VacancationsLimitR = request.Entity.UserVacanciesLimit; if (VacancationsLimitR.Count != 0) { int VacancationsLimitR_Distinct_count = VacancationsLimitR.Select(x => x.VacancyId).Distinct().Count(); int VacancationsLimitR_Count = VacancationsLimitR.Select(x => x.VacancyId).Count(); if (VacancationsLimitR_Distinct_count == VacancationsLimitR_Count) { foreach (var item in VacancationsLimitR) { item.UserId = UserID; } } else { throw new Exception("Sorry You cannot Enter more than one Vaction Limit"); } } #endregion return(new MyRepository().Update(uow, request)); }
public SaveResponse Create(IUnitOfWork uow, SaveRequest <MyRow> request) { //request.Entity.Status = 1; var userid = new MyRepository().Create(uow, request).EntityId.ToString(); BalanceAccountRow balance = new BalanceAccountRow(); EmploeesStatusRow statusRow = new EmploeesStatusRow(); balance.User_ID = int.Parse(userid); balance.BaseSalary = request.Entity.Balance; balance.GrossSalary = request.Entity.Balance; balance.NetIncome = request.Entity.Balance; balance.DateEnd = DateTime.Now; foreach (var item in request.Entity.AlowancesList) { item.UserId = int.Parse(userid); item.AllowanceDate = DateTime.Now; balance.GrossSalary += item.Allowance; //3200 balance.NetIncome += item.Allowance; //3200 } foreach (var item in request.Entity.InsuranceList) { item.UserId = int.Parse(userid); item.InsuranceDate = DateTime.Now; /*balance.NetIncome = balance.GrossSalary;*/ //3200 -50 balance.NetIncome -= item.InsurancesQ; } #region UserVacanciesLimit var VacancationsLimitR = request.Entity.UserVacanciesLimit; if (VacancationsLimitR.Count != 0) { int VacancationsLimitR_Distinct_count = VacancationsLimitR.Select(x => x.VacancyId).Distinct().Count(); int VacancationsLimitR_Count = VacancationsLimitR.Select(x => x.VacancyId).Count(); if (VacancationsLimitR_Distinct_count == VacancationsLimitR_Count) { foreach (var item in VacancationsLimitR) { item.UserId = int.Parse(userid); } } else { throw new Exception("Sorry You cannot Enter more than one Vaction Limit"); } } #endregion statusRow.UserId = int.Parse(userid); statusRow.EmploymentStatusID = 1; //Active in employmentStatus statusRow.EmpSDate = DateTime.Now; uow.Connection.Insert <EmploeesStatusRow>(statusRow); uow.Connection.Insert <BalanceAccountRow>(balance); return(new SaveResponse()); }