public SaveResponse Create(IUnitOfWork uow, SaveRequest <MyRow> request) { var DateEndR = request.Entity.DateEnd.Value; var DateBeginnR = request.Entity.DateBeginn.Value; List <int?> usersid = uow.Connection.List <UserRow>().Where(x => x.IsActive == 1 && x.UserId != 1).Select(x => x.UserId).ToList(); foreach (var item in usersid) //1 { BalanceAccountRow employee = new BalanceAccountRow(); employee.User_ID = item; employee.BaseSalary = uow.Connection.List <MyRow>().OrderByDescending(x => x.Id).FirstOrDefault(x => x.User_ID == item).BaseSalary; employee.DateEnd = request.Entity.DateEnd; employee.DateBeginn = request.Entity.DateBeginn; #region Allowances bool UserExistanceAllowances = uow.Connection.List <AllowancesRow>().Any(x => x.UserId == item.Value); var AllowancList = uow.Connection.List <AllowancesRow>().Where(x => x.UserId == item.Value).ToList(); if (UserExistanceAllowances == true) { decimal?Allowanc = uow.Connection.List <AllowancesRow>().Where(x => x.UserId == item.Value).Select(x => x.Allowance).Sum(); employee.GrossSalary = employee.BaseSalary + Allowanc; } else { employee.GrossSalary = employee.BaseSalary; } #endregion #region BasicInsurances bool UserExistanceinsurances = uow.Connection.List <BasicInsurancesRow>().Any(x => x.UserId == item.Value); if (UserExistanceinsurances == true) { decimal?insurancesQ = uow.Connection.List <BasicInsurancesRow>().Where(x => x.UserId == item.Value).Select(x => x.InsurancesQ).Sum(); employee.NetIncome = employee.GrossSalary - insurancesQ; } else { employee.NetIncome = employee.GrossSalary; } #endregion #region Installments List <InstallmentsRow> installmentValues = uow.Connection.List <InstallmentsRow>().Where( x => x.UserId == item && x.IsAccepted == IsAcceptedEnum.Accepted).ToList(); foreach (var install in installmentValues) { var InstallmentDate = install.InstallmentDate.Value; if (InstallmentDate.Ticks >= DateBeginnR.Ticks && InstallmentDate.Ticks <= DateEndR.Ticks) { employee.NetIncome -= install.InstallmentValues; } } #endregion #region Deductions //var BalanceAccount = uow.Connection.List<MyRow>().OrderByDescending(x => x.Id).FirstOrDefault(x => x.User_ID == item); //var Deduction = uow.Connection.List<DeductionsRow>().FirstOrDefault(x => x.UserId == item.Value && x.DeductionsDate.Value.Month == BalanceAccount.DateEnd.Value.Month); var DeductionsList = uow.Connection.List <DeductionsRow>().Where(x => x.UserId == item.Value).ToList(); foreach (var Ded in DeductionsList) { var DeductionsDate = Ded.DeductionsDate.Value; if (DeductionsDate.Ticks >= DateBeginnR.Ticks && DeductionsDate.Ticks <= DateEndR.Ticks) { employee.NetIncome -= Ded.Deduction; } } #endregion #region Entitlements var EntitlementsList = uow.Connection.List <EntitlementsRow>().Where(x => x.UserId == item.Value).ToList(); foreach (var Ent in EntitlementsList) { var EntitlementsDate = Ent.EntitlementsDate.Value; if (EntitlementsDate.Ticks >= DateBeginnR.Ticks && EntitlementsDate.Ticks <= DateEndR.Ticks) { employee.NetIncome += Ent.Entitlement; employee.GrossSalary += Ent.Entitlement; } } #endregion #region Premiums if (uow.Connection.List <PremiumsRow>().Any(x => x.UserId == item)) { var PremiumsRow = uow.Connection.List <PremiumsRow>().Where(x => x.UserId == item).ToList(); foreach (var premiums in PremiumsRow) { var PermData = premiums.PremiumDate.Value; if (PermData.Ticks >= DateBeginnR.Ticks && PermData.Ticks <= DateEndR.Ticks) { employee.BaseSalary += premiums.PremiumQuantity; employee.GrossSalary += premiums.PremiumQuantity; employee.NetIncome += premiums.PremiumQuantity; } else { // L2n el base kda kda mtzwd l2ny wa5d a5r base employee.GrossSalary += premiums.PremiumQuantity; employee.NetIncome += premiums.PremiumQuantity; } } } #endregion uow.Connection.Insert <MyRow>(employee); } return(new SaveResponse()); }
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()); }