public SaveResponse Create(IUnitOfWork uow, SaveRequest <MyRow> request) { var ListEmp = request.Entity.UserIdList; var PremiumDate = request.Entity.PremiumDate.Value; foreach (var item in ListEmp) { MyRow premium = new MyRow { PremiumQuantity = request.Entity.PremiumQuantity, PremiumDate = request.Entity.PremiumDate, premiumType = request.Entity.premiumType, UserId = item }; uow.Connection.Insert <MyRow>(premium); var BalanceAccountRow = uow.Connection.List <BalanceAccountRow>().Where(x => x.User_ID == item).ToList(); foreach (var balance in BalanceAccountRow) { var DateBeginn = balance.DateBeginn.Value; var DateEnd = balance.DateEnd.Value; if (PremiumDate.Ticks >= DateBeginn.Ticks && PremiumDate.Ticks <= DateEnd.Ticks) { balance.BaseSalary += request.Entity.PremiumQuantity; balance.GrossSalary += request.Entity.PremiumQuantity; balance.NetIncome += request.Entity.PremiumQuantity; var EditedRow = BalanceAccountRow.FirstOrDefault(x => x.User_ID == item && x.DateEnd == DateEnd && x.DateBeginn == DateBeginn); uow.Connection.UpdateById <BalanceAccountRow>(EditedRow); } } //if (BalanceAccountRow != null) //{ // BalanceAccountRow.BaseSalary += request.Entity.PremiumQuantity; // BalanceAccountRow.GrossSalary += request.Entity.PremiumQuantity; // BalanceAccountRow.NetIncome += request.Entity.PremiumQuantity; // uow.Connection.UpdateById<BalanceAccountRow>(BalanceAccountRow); //} } return(new SaveResponse()); }
public SaveResponse Update(IUnitOfWork uow, SaveRequest <MyRow> request) { var UserId = request.Entity.UserId; var PremiumDateR = request.Entity.PremiumDate.Value; MyRow PremiumsEdit = uow.Connection.List <MyRow>().FirstOrDefault(x => x.Id == request.Entity.Id); DateTime PremiumDate_DB = PremiumsEdit.PremiumDate.Value; var PreimumDb = PremiumsEdit.PremiumQuantity; var PremiumQuantityR = request.Entity.PremiumQuantity; var User_BonusB_update = uow.Connection.List <MyRow>().FirstOrDefault(x => x.Id == int.Parse(request.EntityId.ToString())); var BonusB_update = User_BonusB_update.PremiumQuantity; var BalanceAccountRow = uow.Connection.List <BalanceAccountRow>().Where(x => x.User_ID == UserId).ToList(); #region Modify on Only Premium Date if (PremiumDate_DB != PremiumDateR && PremiumQuantityR == PreimumDb) // Modify on Only Premium Date { foreach (var balance in BalanceAccountRow) { var DateBeginn = balance.DateBeginn.Value; var DateEnd = balance.DateEnd.Value; if (PremiumDate_DB.Ticks >= DateBeginn.Ticks && PremiumDate_DB.Ticks <= DateEnd.Ticks) { balance.NetIncome -= PremiumsEdit.PremiumQuantity; balance.GrossSalary -= PremiumsEdit.PremiumQuantity; balance.BaseSalary -= PremiumsEdit.PremiumQuantity; var EditedRow = BalanceAccountRow.FirstOrDefault(x => x.User_ID == UserId && x.DateEnd == DateEnd && x.DateBeginn == DateBeginn); uow.Connection.UpdateById <BalanceAccountRow>(EditedRow); } if (PremiumDateR.Ticks >= DateBeginn.Ticks && PremiumDateR.Ticks <= DateEnd.Ticks) { balance.NetIncome += request.Entity.PremiumQuantity; balance.GrossSalary += request.Entity.PremiumQuantity; balance.BaseSalary += request.Entity.PremiumQuantity; var EditedRow = BalanceAccountRow.FirstOrDefault(x => x.User_ID == UserId && x.DateEnd == DateEnd && x.DateBeginn == DateBeginn); uow.Connection.UpdateById <BalanceAccountRow>(EditedRow); } } } #endregion #region Modify on Premiums Only if (PremiumQuantityR != PreimumDb && PremiumDate_DB == PremiumDateR) // Modify on Premiums Only { foreach (var balance in BalanceAccountRow) { var DateBeginn = balance.DateBeginn.Value; var DateEnd = balance.DateEnd.Value; if (PremiumDateR.Ticks >= DateBeginn.Ticks && PremiumDateR.Ticks <= DateEnd.Ticks) { balance.NetIncome -= PremiumsEdit.PremiumQuantity; balance.NetIncome += request.Entity.PremiumQuantity; balance.GrossSalary -= PremiumsEdit.PremiumQuantity; balance.GrossSalary += request.Entity.PremiumQuantity; balance.BaseSalary -= PremiumsEdit.PremiumQuantity; balance.BaseSalary += request.Entity.PremiumQuantity; var EditedRow = BalanceAccountRow.FirstOrDefault(x => x.User_ID == UserId && x.DateEnd == DateEnd && x.DateBeginn == DateBeginn); uow.Connection.UpdateById <BalanceAccountRow>(EditedRow); } } } #endregion #region Modifiy on Date and Premimums if (PremiumQuantityR != PreimumDb && PremiumDate_DB != PremiumDateR) // Modifiy on Date and Premimums { foreach (var balance in BalanceAccountRow) { DateTime DateEnd = balance.DateEnd.Value; DateTime DateBeginn = balance.DateBeginn.Value; //2lly h check 3lih if (PremiumDate_DB.Ticks >= DateBeginn.Ticks && PremiumDate_DB.Ticks <= DateEnd.Ticks) // Modify on Entitlments { balance.NetIncome -= PreimumDb; balance.GrossSalary -= PreimumDb; balance.BaseSalary -= PreimumDb; var EditedRow = BalanceAccountRow.FirstOrDefault(x => x.User_ID == UserId && x.DateEnd == DateEnd && x.DateBeginn == DateBeginn); uow.Connection.UpdateById <BalanceAccountRow>(EditedRow); } } foreach (var balance in BalanceAccountRow) { DateTime DateEnd = balance.DateEnd.Value; DateTime DateBeginn = balance.DateBeginn.Value; if (PremiumDate_DB != PremiumDateR) { if (PremiumDateR.Ticks >= DateBeginn.Ticks && PremiumDateR.Ticks <= DateEnd.Ticks) // Modify on Entitlments Date { balance.NetIncome += PremiumQuantityR; balance.GrossSalary += PremiumQuantityR; var EditedRow = BalanceAccountRow.FirstOrDefault(x => x.User_ID == UserId && x.DateEnd == DateEnd && x.DateBeginn == DateBeginn); uow.Connection.UpdateById <BalanceAccountRow>(EditedRow); } } } } #endregion return(new MyRepository().Update(uow, request)); }