Exemple #1
0
        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));
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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());
        }