Ejemplo n.º 1
0
        public static void ReCalculatePeriod()
        {
            using (var db = new RentBikeEntities())
            {
                var contracts = db.Contracts.Where(c => c.CONTRACT_STATUS == true).ToList();
                foreach (var contract in contracts)
                {
                    List <PayPeriod> lstPay = db.PayPeriods.Where(c => c.CONTRACT_ID == contract.ID).ToList();
                    int div = lstPay.Count % 3;
                    if (div > 0)
                    {
                        div = 3 - div;
                        PayPeriod lastPay = lstPay.LastOrDefault();
                        for (int i = 1; i <= div; i++)
                        {
                            PayPeriod pp = new PayPeriod();
                            pp.CONTRACT_ID       = contract.ID;
                            pp.PAY_DATE          = lastPay.PAY_DATE.AddDays(i * 10);
                            pp.AMOUNT_PER_PERIOD = lastPay.AMOUNT_PER_PERIOD;
                            pp.STATUS            = true;
                            pp.ACTUAL_PAY        = 0;

                            db.PayPeriods.Add(pp);
                        }
                    }
                }
                db.SaveChanges();
            }
        }
Ejemplo n.º 2
0
        public static void CreateDummyInout()
        {
            using (var db = new RentBikeEntities())
            {
                var stores = db.Stores.Where(c => c.ACTIVE == true).ToList();
                foreach (var store in stores)
                {
                    if (db.InOuts.Any(c => c.INOUT_DATE == DateTime.Today && c.STORE_ID == store.ID))
                    {
                        continue;
                    }

                    InOut io = new InOut();
                    io.IN_AMOUNT     = 0;
                    io.OUT_AMOUNT    = 0;
                    io.CONTRACT_ID   = 1;
                    io.PERIOD_ID     = 1;
                    io.RENT_TYPE_ID  = 3;
                    io.INOUT_TYPE_ID = 23;
                    io.PERIOD_DATE   = DateTime.Today;
                    io.MORE_INFO     = Constants.DUMMY_INOUT;
                    io.STORE_ID      = store.ID;
                    io.SEARCH_TEXT   = Constants.DUMMY_INOUT;
                    io.INOUT_DATE    = DateTime.Now;
                    io.CREATED_BY    = Constants.DUMMY_USER;
                    io.CREATED_DATE  = DateTime.Now;
                    io.UPDATED_BY    = Constants.DUMMY_USER;
                    io.UPDATED_DATE  = DateTime.Now;
                    io.IS_DUMMY      = true;

                    db.InOuts.Add(io);
                }
                db.SaveChanges();
            }
        }
Ejemplo n.º 3
0
        public static void SaveSummaryPayFeeDaily()
        {
            using (var db = new RentBikeEntities())
            {
                try
                {
                    var stores = db.Stores.Where(c => c.ACTIVE == true).ToList();
                    foreach (var store in stores)
                    {
                        List <CONTRACT_FULL_VW> listContract = GetWarningData(DateTime.Today.ToString(), string.Empty, store.ID).Where(c => c.OVER_DATE <= 50).ToList();
                        foreach (var contract in listContract)
                        {
                            if (db.SummaryPayFeeDailies.Any(c => c.PERIOD_DATE == DateTime.Today &&
                                                            c.STORE_ID == store.ID))
                            {
                                continue;
                            }

                            SummaryPayFeeDaily sum = new SummaryPayFeeDaily();
                            sum.CONTRACT_ID    = contract.ID;
                            sum.CONTRACT_NO    = contract.CONTRACT_NO;
                            sum.CUSTOMER_NAME  = contract.CUSTOMER_NAME;
                            sum.PHONE          = contract.PHONE;
                            sum.RENT_TYPE_ID   = contract.RENT_TYPE_ID;
                            sum.RENT_TYPE_NAME = contract.RENT_TYPE_NAME;
                            sum.PERIOD_DATE    = DateTime.Today;
                            sum.PAY_FEE        = contract.FEE_PER_DAY;
                            sum.PAY_TIME       = contract.PAYED_TIME;
                            sum.PAY_MESSAGE    = contract.PERIOD_MESSAGE;
                            sum.STORE_ID       = contract.STORE_ID;
                            sum.STORE_NAME     = contract.STORE_NAME;
                            sum.NOTE           = contract.NOTE;
                            sum.SEARCH_TEXT    = contract.SEARCH_TEXT;
                            sum.CREATED_DATE   = DateTime.Now;
                            sum.UPDATED_DATE   = DateTime.Now;

                            db.SummaryPayFeeDailies.Add(sum);
                        }
                    }
                    db.SaveChanges();
                }
                catch (System.Data.Entity.Validation.DbEntityValidationException e)
                {
                    foreach (var eve in e.EntityValidationErrors)
                    {
                        Logger.Log(string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                                 eve.Entry.Entity.GetType().Name, eve.Entry.State));
                        foreach (var ve in eve.ValidationErrors)
                        {
                            Logger.Log(string.Format("- Property: \"{0}\", Error: \"{1}\"",
                                                     ve.PropertyName, ve.ErrorMessage));
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.Log(ex.Message + Environment.NewLine + ex.StackTrace);
                }
            }
        }
Ejemplo n.º 4
0
        public static void WriteLog(string userName, string storeName, string action, bool isCrashed)
        {
            Log lg = new Log();

            lg.ACCOUNT     = userName;
            lg.STORE       = storeName;
            lg.LOG_ACTION  = action;
            lg.LOG_DATE    = DateTime.Now;
            lg.IS_CRASH    = isCrashed;
            lg.LOG_MSG     = string.Format("Tài khoản {0} cửa hàng {1} thực hiện {2} vào lúc {3}", lg.ACCOUNT, storeName, lg.LOG_ACTION, lg.LOG_DATE);
            lg.SEARCH_TEXT = lg.LOG_MSG;

            using (var db = new RentBikeEntities())
            {
                db.Logs.Add(lg);
                db.SaveChanges();
            }
        }
Ejemplo n.º 5
0
 public static void UpdatePeriodAmount()
 {
     using (var db = new RentBikeEntities())
     {
         var contracts = db.Contracts.Where(c => c.CONTRACT_STATUS == true).ToList();
         foreach (var contract in contracts)
         {
             List <PayPeriod> payList = db.PayPeriods.Where(c => c.CONTRACT_ID == contract.ID).ToList();
             foreach (PayPeriod pp in payList)
             {
                 var     inOutList = db.InOuts.Where(c => c.PERIOD_ID == pp.ID);
                 decimal total     = inOutList.Select(c => c.IN_AMOUNT).DefaultIfEmpty(0).Sum();
                 pp.ACTUAL_PAY = total;
             }
         }
         db.SaveChanges();
     }
 }
Ejemplo n.º 6
0
        public static void WriteLog(string userName, string storeName, string action, string message, bool isCrashed)
        {
            Log lg = new Log();

            lg.ACCOUNT     = userName;
            lg.STORE       = storeName;
            lg.LOG_ACTION  = action;
            lg.LOG_DATE    = DateTime.Now;
            lg.IS_CRASH    = isCrashed;
            lg.LOG_MSG     = message;
            lg.SEARCH_TEXT = lg.LOG_MSG;

            using (var db = new RentBikeEntities())
            {
                db.Logs.Add(lg);
                db.SaveChanges();
            }
        }
Ejemplo n.º 7
0
        public static void AutoUpdateAmountPayPeriod()
        {
            using (var db = new RentBikeEntities())
            {
                var contracts = db.Contracts.Where(c => c.CONTRACT_STATUS == true).ToList();
                foreach (var contract in contracts)
                {
                    List <PayPeriod> listPayPeriod = db.PayPeriods.Where(c => c.CONTRACT_ID == contract.ID).ToList();
                    foreach (PayPeriod pp in listPayPeriod)
                    {
                        var inoutList = db.InOuts.Where(s => s.PERIOD_ID == pp.ID);
                        var sumPay    = inoutList.Select(s => s.IN_AMOUNT).DefaultIfEmpty(0).Sum();

                        pp.ACTUAL_PAY = sumPay;
                    }
                }
                db.SaveChanges();
            }
        }
Ejemplo n.º 8
0
 public static void UpdatePeriodAmountToZero()
 {
     using (var db = new RentBikeEntities())
     {
         var contracts = db.Contracts.Where(c => c.CONTRACT_STATUS == true).ToList();
         foreach (var contract in contracts)
         {
             if (contract.FEE_PER_DAY == 0)
             {
                 List <PayPeriod> payList = db.PayPeriods.Where(c => c.CONTRACT_ID == contract.ID && c.AMOUNT_PER_PERIOD > 0).ToList();
                 foreach (PayPeriod pp in payList)
                 {
                     pp.AMOUNT_PER_PERIOD = 0;
                 }
             }
         }
         db.SaveChanges();
     }
 }
Ejemplo n.º 9
0
 public static void RemoveRedundantPeriod()
 {
     using (var db = new RentBikeEntities())
     {
         var contracts = db.Contracts.Where(c => c.CONTRACT_STATUS == true).ToList();
         foreach (var contract in contracts)
         {
             List <PayPeriod> lstPay = db.PayPeriods.Where(c => c.CONTRACT_ID == contract.ID).ToList();
             int div = lstPay.Count % 3;
             if (div > 0)
             {
                 int index = lstPay.Count - 1;
                 for (int i = 1; i <= div; i++)
                 {
                     db.PayPeriods.Remove(lstPay[index]);
                     index -= 1;
                 }
             }
         }
         db.SaveChanges();
     }
 }
Ejemplo n.º 10
0
        public static void AutoExtendPeriod(RentBikeEntities db, int contractId)
        {
            Contract contract = db.Contracts.FirstOrDefault(c => c.ID == contractId && c.CONTRACT_STATUS == true);

            if (contract != null)
            {
                var       listPayPeriod = db.PayPeriods.Where(c => c.CONTRACT_ID == contract.ID).ToList();
                PayPeriod lastPayPeriod = listPayPeriod.LastOrDefault();

                DateTime extendEndDate = (contract.EXTEND_END_DATE == null || contract.EXTEND_END_DATE == contract.END_DATE) ? contract.END_DATE.AddDays(-10) : lastPayPeriod.PAY_DATE;

                int overDate = DateTime.Today.Subtract(extendEndDate).Days;
                if (overDate >= 0)
                {
                    int      percentDate    = overDate / 30;
                    DateTime endDateUpdated = extendEndDate.AddDays(30 * (percentDate + 1));
                    contract.EXTEND_END_DATE = endDateUpdated;

                    int     multipleFee;
                    decimal increateFeeCar;
                    decimal increateFeeEquip;
                    decimal increateFeeOther;
                    CalculatePeriodFee(db, contract, out multipleFee, out increateFeeCar, out increateFeeEquip, out increateFeeOther, false);

                    for (int i = 0; i <= percentDate; i++)
                    {
                        if (lastPayPeriod.PAY_DATE.Subtract(contract.EXTEND_END_DATE.Value.AddDays(-10)).Days > 0)
                        {
                            break;
                        }
                        lastPayPeriod = CreateOneMorePayPeriod(db, contract, lastPayPeriod, multipleFee, increateFeeCar, increateFeeEquip, increateFeeOther, false);
                    }

                    contract.EXTEND_END_DATE = lastPayPeriod.PAY_DATE;
                    db.SaveChanges();
                }
            }
        }
Ejemplo n.º 11
0
        public static void AutoUpdateAndRemovePeriod()
        {
            using (var db = new RentBikeEntities())
            {
                var contracts = db.Contracts.Where(c => c.CONTRACT_STATUS == true).ToList();
                foreach (var contract in contracts)
                {
                    List <PayPeriod> lstPay     = db.PayPeriods.Where(c => c.CONTRACT_ID == contract.ID).ToList();
                    DateTime         extendDate = contract.END_DATE.AddDays(-10);

                    if (!contract.EXTEND_END_DATE.HasValue || contract.EXTEND_END_DATE == contract.END_DATE)
                    {
                        contract.EXTEND_END_DATE = contract.END_DATE;
                        extendDate = contract.EXTEND_END_DATE.Value.AddDays(-10);
                    }
                    else
                    {
                        extendDate = contract.EXTEND_END_DATE.Value;
                    }
                    db.PayPeriods.RemoveRange(lstPay.Where(c => c.PAY_DATE > extendDate));
                }
                db.SaveChanges();
            }
        }
Ejemplo n.º 12
0
        public static void SaveSummaryPayFeeMonthly()
        {
            decimal totalSlowFee, totalDebtFee;
            using (var db = new RentBikeEntities())
            {
                try
                {
                    var stores = db.Stores.Where(c => c.ACTIVE == true).ToList();
                    foreach (var store in stores)
                    {
                        if (db.SummaryPayFeeMonthlies.Any(c => c.SUMMURY_DATE == DateTime.Today
                                && c.STORE_ID == store.ID))
                            continue;

                        GetSummuryFeeMonthly(out totalSlowFee, out totalDebtFee, store.ID);

                        SummaryPayFeeMonthly sum1 = new SummaryPayFeeMonthly();
                        sum1.STORE_ID = store.ID;
                        sum1.STORE_NAME = store.NAME;
                        sum1.SUMMURY_FEE = totalSlowFee;
                        sum1.SUMMURY_FEE_TYPE = (int)SUMMURY_FEE_TYPE.SLOW_FEE;
                        sum1.SUMMURY_DATE = DateTime.Today;
                        sum1.NOTE = Constants.SUMMURY_SLOW_FEE;
                        sum1.CREATED_DATE = DateTime.Now;
                        sum1.CREATED_BY = Constants.DUMMY_USER;
                        sum1.UPDATED_DATE = DateTime.Now;
                        sum1.UPDATED_BY = Constants.DUMMY_USER;
                        db.SummaryPayFeeMonthlies.Add(sum1);

                        SummaryPayFeeMonthly sum2 = new SummaryPayFeeMonthly();
                        sum2.STORE_ID = store.ID;
                        sum2.STORE_NAME = store.NAME;
                        sum2.SUMMURY_FEE = totalDebtFee;
                        sum2.SUMMURY_FEE_TYPE = (int)SUMMURY_FEE_TYPE.DEBT_FEE;
                        sum2.SUMMURY_DATE = DateTime.Today;
                        sum2.NOTE = Constants.SUMMURY_DEBT_FEE;
                        sum2.CREATED_DATE = DateTime.Now;
                        sum2.CREATED_BY = Constants.DUMMY_USER;
                        sum2.UPDATED_DATE = DateTime.Now;
                        sum2.UPDATED_BY = Constants.DUMMY_USER;
                        db.SummaryPayFeeMonthlies.Add(sum2);

                    }
                    db.SaveChanges();
                }
                catch (System.Data.Entity.Validation.DbEntityValidationException e)
                {
                    foreach (var eve in e.EntityValidationErrors)
                    {
                        Logger.Log(string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                            eve.Entry.Entity.GetType().Name, eve.Entry.State));
                        foreach (var ve in eve.ValidationErrors)
                        {
                            Logger.Log(string.Format("- Property: \"{0}\", Error: \"{1}\"",
                                 ve.PropertyName, ve.ErrorMessage));
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.Log(ex.Message + Environment.NewLine + ex.StackTrace);
                }
            }
        }
Ejemplo n.º 13
0
        public static void SaveSummaryPayFeeDaily()
        {
            using (var db = new RentBikeEntities())
            {
                try
                {
                    var stores = db.Stores.Where(c => c.ACTIVE == true).ToList();
                    foreach (var store in stores)
                    {
                        List<CONTRACT_FULL_VW> listContract = GetWarningData(DateTime.Today.ToString(), string.Empty, store.ID).Where(c => c.OVER_DATE <= 50).ToList();
                        foreach (var contract in listContract)
                        {
                            if (db.SummaryPayFeeDailies.Any(c => c.PERIOD_DATE == DateTime.Today
                                && c.STORE_ID == store.ID))
                                continue;

                            SummaryPayFeeDaily sum = new SummaryPayFeeDaily();
                            sum.CONTRACT_ID = contract.ID;
                            sum.CONTRACT_NO = contract.CONTRACT_NO;
                            sum.CUSTOMER_NAME = contract.CUSTOMER_NAME;
                            sum.PHONE = contract.PHONE;
                            sum.RENT_TYPE_ID = contract.RENT_TYPE_ID;
                            sum.RENT_TYPE_NAME = contract.RENT_TYPE_NAME;
                            sum.PERIOD_DATE = DateTime.Today;
                            sum.PAY_FEE = contract.FEE_PER_DAY;
                            sum.PAY_TIME = contract.PAYED_TIME;
                            sum.PAY_MESSAGE = contract.PERIOD_MESSAGE;
                            sum.STORE_ID = contract.STORE_ID;
                            sum.STORE_NAME = contract.STORE_NAME;
                            sum.NOTE = contract.NOTE;
                            sum.SEARCH_TEXT = contract.SEARCH_TEXT;
                            sum.CREATED_DATE = DateTime.Now;
                            sum.UPDATED_DATE = DateTime.Now;

                            db.SummaryPayFeeDailies.Add(sum);
                        }
                    }
                    db.SaveChanges();
                }
                catch (System.Data.Entity.Validation.DbEntityValidationException e)
                {
                    foreach (var eve in e.EntityValidationErrors)
                    {
                        Logger.Log(string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                            eve.Entry.Entity.GetType().Name, eve.Entry.State));
                        foreach (var ve in eve.ValidationErrors)
                        {
                            Logger.Log(string.Format("- Property: \"{0}\", Error: \"{1}\"",
                                 ve.PropertyName, ve.ErrorMessage));
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.Log(ex.Message + Environment.NewLine + ex.StackTrace);
                }
            }
        }
Ejemplo n.º 14
0
 public static void RemoveRedundantPeriod()
 {
     using (var db = new RentBikeEntities())
     {
         var contracts = db.Contracts.Where(c => c.CONTRACT_STATUS == true).ToList();
         foreach (var contract in contracts)
         {
             List<PayPeriod> lstPay = db.PayPeriods.Where(c => c.CONTRACT_ID == contract.ID).ToList();
             int div = lstPay.Count % 3;
             if (div > 0)
             {
                 int index = lstPay.Count - 1;
                 for (int i = 1; i <= div; i++)
                 {
                     db.PayPeriods.Remove(lstPay[index]);
                     index -= 1;
                 }
             }
         }
         db.SaveChanges();
     }
 }
Ejemplo n.º 15
0
        public static void ReCalculatePeriod()
        {
            using (var db = new RentBikeEntities())
            {
                var contracts = db.Contracts.Where(c => c.CONTRACT_STATUS == true).ToList();
                foreach (var contract in contracts)
                {
                    List<PayPeriod> lstPay = db.PayPeriods.Where(c => c.CONTRACT_ID == contract.ID).ToList();
                    int div = lstPay.Count % 3;
                    if (div > 0)
                    {
                        div = 3 - div;
                        PayPeriod lastPay = lstPay.LastOrDefault();
                        for (int i = 1; i <= div; i++)
                        {
                            PayPeriod pp = new PayPeriod();
                            pp.CONTRACT_ID = contract.ID;
                            pp.PAY_DATE = lastPay.PAY_DATE.AddDays(i * 10);
                            pp.AMOUNT_PER_PERIOD = lastPay.AMOUNT_PER_PERIOD;
                            pp.STATUS = true;
                            pp.ACTUAL_PAY = 0;

                            db.PayPeriods.Add(pp);
                        }
                    }
                }
                db.SaveChanges();
            }
        }
Ejemplo n.º 16
0
        public static void AutoExtendPeriod(RentBikeEntities db, int contractId)
        {
            Contract contract = db.Contracts.FirstOrDefault(c => c.ID == contractId && c.CONTRACT_STATUS == true);
            if (contract != null)
            {
                var listPayPeriod = db.PayPeriods.Where(c => c.CONTRACT_ID == contract.ID).ToList();
                PayPeriod lastPayPeriod = listPayPeriod.LastOrDefault();

                DateTime extendEndDate = (contract.EXTEND_END_DATE == null || contract.EXTEND_END_DATE == contract.END_DATE) ? contract.END_DATE.AddDays(-10) : lastPayPeriod.PAY_DATE;

                int overDate = DateTime.Today.Subtract(extendEndDate).Days;
                if (overDate >= 0)
                {
                    int percentDate = overDate / 30;
                    DateTime endDateUpdated = extendEndDate.AddDays(30 * (percentDate + 1));
                    contract.EXTEND_END_DATE = endDateUpdated;

                    int multipleFee;
                    decimal increateFeeCar;
                    decimal increateFeeEquip;
                    decimal increateFeeOther;
                    CalculatePeriodFee(db, contract, out multipleFee, out increateFeeCar, out increateFeeEquip, out increateFeeOther, false);

                    for (int i = 0; i <= percentDate; i++)
                    {
                        if (lastPayPeriod.PAY_DATE.Subtract(contract.EXTEND_END_DATE.Value.AddDays(-10)).Days > 0)
                        {
                            break;
                        }
                        lastPayPeriod = CreateOneMorePayPeriod(db, contract, lastPayPeriod, multipleFee, increateFeeCar, increateFeeEquip, increateFeeOther, false);
                    }

                    contract.EXTEND_END_DATE = lastPayPeriod.PAY_DATE;
                    db.SaveChanges();
                }
            }
        }
Ejemplo n.º 17
0
        public static void CreateDummyInout()
        {
            using (var db = new RentBikeEntities())
            {
                var stores = db.Stores.Where(c => c.ACTIVE == true).ToList();
                foreach (var store in stores)
                {
                    if (db.InOuts.Any(c => c.INOUT_DATE == DateTime.Today && c.STORE_ID == store.ID))
                        continue;

                    InOut io = new InOut();
                    io.IN_AMOUNT = 0;
                    io.OUT_AMOUNT = 0;
                    io.CONTRACT_ID = 1;
                    io.PERIOD_ID = 1;
                    io.RENT_TYPE_ID = 3;
                    io.INOUT_TYPE_ID = 23;
                    io.PERIOD_DATE = DateTime.Today;
                    io.MORE_INFO = Constants.DUMMY_INOUT;
                    io.STORE_ID = store.ID;
                    io.SEARCH_TEXT = Constants.DUMMY_INOUT;
                    io.INOUT_DATE = DateTime.Now;
                    io.CREATED_BY = Constants.DUMMY_USER;
                    io.CREATED_DATE = DateTime.Now;
                    io.UPDATED_BY = Constants.DUMMY_USER;
                    io.UPDATED_DATE = DateTime.Now;
                    io.IS_DUMMY = true;

                    db.InOuts.Add(io);
                }
                db.SaveChanges();
            }
        }
Ejemplo n.º 18
0
        private static PayPeriod CreateOneMorePayPeriod(RentBikeEntities db, Contract contract, PayPeriod lastPeriod, decimal multipleFee, decimal increateFeeCar, decimal increateFeeEquip, decimal increateFeeOther, bool bFirstCreated)
        {
            PayPeriod pp1 = new PayPeriod();
            pp1.CONTRACT_ID = contract.ID;
            if (bFirstCreated)
            {
                pp1.PAY_DATE = lastPeriod.PAY_DATE;
                pp1.AMOUNT_PER_PERIOD = increateFeeCar;
            }
            else
            {
                pp1.PAY_DATE = lastPeriod.PAY_DATE.AddDays(10);
                if (contract.FEE_PER_DAY > 0)
                {
                    switch (contract.RENT_TYPE_ID)
                    {
                        case 1:
                            if (((contract.FEE_PER_DAY / multipleFee)) < RentCarFeePerDay)
                            {
                                var countPeriod = db.PayPeriods.Where(c => c.CONTRACT_ID == contract.ID).Count();

                                if (countPeriod <= 3)
                                    increateFeeCar = (contract.FEE_PER_DAY * 10) + (multipleFee * 50 * 10);
                                else if (countPeriod > 3)
                                    increateFeeCar = (contract.FEE_PER_DAY * 10) + (multipleFee * 100 * 10);

                                pp1.AMOUNT_PER_PERIOD = increateFeeCar;
                            }
                            else
                            {
                                if (contract.FEE_PER_DAY < (lastPeriod.AMOUNT_PER_PERIOD / 10))
                                    pp1.AMOUNT_PER_PERIOD = lastPeriod.AMOUNT_PER_PERIOD;
                                else
                                {
                                    if (((contract.FEE_PER_DAY / multipleFee) * 10) < 4000)
                                        pp1.AMOUNT_PER_PERIOD = increateFeeCar;
                                    else
                                        pp1.AMOUNT_PER_PERIOD = increateFeeOther;
                                }
                            }
                            break;
                        case 2:
                            if (contract.FEE_PER_DAY < (lastPeriod.AMOUNT_PER_PERIOD / 10))
                                pp1.AMOUNT_PER_PERIOD = lastPeriod.AMOUNT_PER_PERIOD;
                            else
                            {
                                if (((contract.FEE_PER_DAY / multipleFee) * 10) < 4000)
                                    pp1.AMOUNT_PER_PERIOD = increateFeeCar;
                                else
                                    pp1.AMOUNT_PER_PERIOD = increateFeeOther;
                            }
                            break;
                        //case 2:
                        //    if (((contract.FEE_PER_DAY / multipleFee) * 10) < 6000)
                        //        pp1.AMOUNT_PER_PERIOD = increateFeeEquip;
                        //    else
                        //        pp1.AMOUNT_PER_PERIOD = increateFeeOther;
                        //    break;
                        default:
                            pp1.AMOUNT_PER_PERIOD = increateFeeOther;
                            break;
                    }
                }
                else
                    pp1.AMOUNT_PER_PERIOD = increateFeeCar;
            }
            pp1.STATUS = true;
            pp1.ACTUAL_PAY = 0;

            PayPeriod pp2 = new PayPeriod();
            pp2.CONTRACT_ID = contract.ID;
            if (bFirstCreated)
                pp2.PAY_DATE = pp1.PAY_DATE.AddDays(9);
            else
                pp2.PAY_DATE = pp1.PAY_DATE.AddDays(10);
            pp2.AMOUNT_PER_PERIOD = pp1.AMOUNT_PER_PERIOD;
            pp2.STATUS = true;
            pp2.ACTUAL_PAY = 0;

            PayPeriod pp3 = new PayPeriod();
            pp3.CONTRACT_ID = contract.ID;
            pp3.PAY_DATE = pp2.PAY_DATE.AddDays(10);
            pp3.AMOUNT_PER_PERIOD = pp1.AMOUNT_PER_PERIOD;
            pp3.STATUS = true;
            pp3.ACTUAL_PAY = 0;

            db.PayPeriods.Add(pp1);
            db.PayPeriods.Add(pp2);
            db.PayPeriods.Add(pp3);

            db.SaveChanges();

            return pp3;
        }
Ejemplo n.º 19
0
 public static void UpdatePeriodAmount()
 {
     using (var db = new RentBikeEntities())
     {
         var contracts = db.Contracts.Where(c => c.CONTRACT_STATUS == true).ToList();
         foreach (var contract in contracts)
         {
             List<PayPeriod> payList = db.PayPeriods.Where(c => c.CONTRACT_ID == contract.ID).ToList();
             foreach (PayPeriod pp in payList)
             {
                 var inOutList = db.InOuts.Where(c => c.PERIOD_ID == pp.ID);
                 decimal total = inOutList.Select(c => c.IN_AMOUNT).DefaultIfEmpty(0).Sum();
                 pp.ACTUAL_PAY = total;
             }
         }
         db.SaveChanges();
     }
 }
Ejemplo n.º 20
0
        public static void AutoUpdateAndRemovePeriod()
        {
            using (var db = new RentBikeEntities())
            {
                var contracts = db.Contracts.Where(c => c.CONTRACT_STATUS == true).ToList();
                foreach (var contract in contracts)
                {
                    List<PayPeriod> lstPay = db.PayPeriods.Where(c => c.CONTRACT_ID == contract.ID).ToList();
                    DateTime extendDate = contract.END_DATE.AddDays(-10);

                    if (!contract.EXTEND_END_DATE.HasValue || contract.EXTEND_END_DATE == contract.END_DATE)
                    {
                        contract.EXTEND_END_DATE = contract.END_DATE;
                        extendDate = contract.EXTEND_END_DATE.Value.AddDays(-10);
                    }
                    else
                    {
                        extendDate = contract.EXTEND_END_DATE.Value;
                    }
                    db.PayPeriods.RemoveRange(lstPay.Where(c => c.PAY_DATE > extendDate));
                }
                db.SaveChanges();
            }
        }
Ejemplo n.º 21
0
 public static void UpdatePeriodAmountToZero()
 {
     using (var db = new RentBikeEntities())
     {
         var contracts = db.Contracts.Where(c => c.CONTRACT_STATUS == true).ToList();
         foreach (var contract in contracts)
         {
             if (contract.FEE_PER_DAY == 0)
             {
                 List<PayPeriod> payList = db.PayPeriods.Where(c => c.CONTRACT_ID == contract.ID && c.AMOUNT_PER_PERIOD > 0).ToList();
                 foreach (PayPeriod pp in payList)
                 {
                     pp.AMOUNT_PER_PERIOD = 0;
                 }
             }
         }
         db.SaveChanges();
     }
 }
Ejemplo n.º 22
0
        private static PayPeriod CreateOneMorePayPeriod(RentBikeEntities db, Contract contract, PayPeriod lastPeriod, decimal multipleFee, decimal increateFeeCar, decimal increateFeeEquip, decimal increateFeeOther, bool bFirstCreated)
        {
            PayPeriod pp1 = new PayPeriod();

            pp1.CONTRACT_ID = contract.ID;
            if (bFirstCreated)
            {
                pp1.PAY_DATE          = lastPeriod.PAY_DATE;
                pp1.AMOUNT_PER_PERIOD = increateFeeCar;
            }
            else
            {
                pp1.PAY_DATE = lastPeriod.PAY_DATE.AddDays(10);
                if (contract.FEE_PER_DAY > 0)
                {
                    switch (contract.RENT_TYPE_ID)
                    {
                    case 1:
                        if (((contract.FEE_PER_DAY / multipleFee)) < RentCarFeePerDay)
                        {
                            var countPeriod = db.PayPeriods.Where(c => c.CONTRACT_ID == contract.ID).Count();

                            if (countPeriod <= 3)
                            {
                                increateFeeCar = (contract.FEE_PER_DAY * 10) + (multipleFee * 50 * 10);
                            }
                            else if (countPeriod > 3)
                            {
                                increateFeeCar = (contract.FEE_PER_DAY * 10) + (multipleFee * 100 * 10);
                            }

                            pp1.AMOUNT_PER_PERIOD = increateFeeCar;
                        }
                        else
                        {
                            if (contract.FEE_PER_DAY < (lastPeriod.AMOUNT_PER_PERIOD / 10))
                            {
                                pp1.AMOUNT_PER_PERIOD = lastPeriod.AMOUNT_PER_PERIOD;
                            }
                            else
                            {
                                if (((contract.FEE_PER_DAY / multipleFee) * 10) < 4000)
                                {
                                    pp1.AMOUNT_PER_PERIOD = increateFeeCar;
                                }
                                else
                                {
                                    pp1.AMOUNT_PER_PERIOD = increateFeeOther;
                                }
                            }
                        }
                        break;

                    case 2:
                        if (contract.FEE_PER_DAY < (lastPeriod.AMOUNT_PER_PERIOD / 10))
                        {
                            pp1.AMOUNT_PER_PERIOD = lastPeriod.AMOUNT_PER_PERIOD;
                        }
                        else
                        {
                            if (((contract.FEE_PER_DAY / multipleFee) * 10) < 4000)
                            {
                                pp1.AMOUNT_PER_PERIOD = increateFeeCar;
                            }
                            else
                            {
                                pp1.AMOUNT_PER_PERIOD = increateFeeOther;
                            }
                        }
                        break;

                    //case 2:
                    //    if (((contract.FEE_PER_DAY / multipleFee) * 10) < 6000)
                    //        pp1.AMOUNT_PER_PERIOD = increateFeeEquip;
                    //    else
                    //        pp1.AMOUNT_PER_PERIOD = increateFeeOther;
                    //    break;
                    default:
                        pp1.AMOUNT_PER_PERIOD = increateFeeOther;
                        break;
                    }
                }
                else
                {
                    pp1.AMOUNT_PER_PERIOD = increateFeeCar;
                }
            }
            pp1.STATUS     = true;
            pp1.ACTUAL_PAY = 0;

            PayPeriod pp2 = new PayPeriod();

            pp2.CONTRACT_ID = contract.ID;
            if (bFirstCreated)
            {
                pp2.PAY_DATE = pp1.PAY_DATE.AddDays(9);
            }
            else
            {
                pp2.PAY_DATE = pp1.PAY_DATE.AddDays(10);
            }
            pp2.AMOUNT_PER_PERIOD = pp1.AMOUNT_PER_PERIOD;
            pp2.STATUS            = true;
            pp2.ACTUAL_PAY        = 0;

            PayPeriod pp3 = new PayPeriod();

            pp3.CONTRACT_ID       = contract.ID;
            pp3.PAY_DATE          = pp2.PAY_DATE.AddDays(10);
            pp3.AMOUNT_PER_PERIOD = pp1.AMOUNT_PER_PERIOD;
            pp3.STATUS            = true;
            pp3.ACTUAL_PAY        = 0;

            db.PayPeriods.Add(pp1);
            db.PayPeriods.Add(pp2);
            db.PayPeriods.Add(pp3);

            db.SaveChanges();

            return(pp3);
        }
Ejemplo n.º 23
0
        public static void AutoUpdateAmountPayPeriod()
        {
            using (var db = new RentBikeEntities())
            {
                var contracts = db.Contracts.Where(c => c.CONTRACT_STATUS == true).ToList();
                foreach (var contract in contracts)
                {
                    List<PayPeriod> listPayPeriod = db.PayPeriods.Where(c => c.CONTRACT_ID == contract.ID).ToList();
                    foreach (PayPeriod pp in listPayPeriod)
                    {
                        var inoutList = db.InOuts.Where(s => s.PERIOD_ID == pp.ID);
                        var sumPay = inoutList.Select(s => s.IN_AMOUNT).DefaultIfEmpty(0).Sum();

                        pp.ACTUAL_PAY = sumPay;
                    }
                }
                db.SaveChanges();
            }
        }
Ejemplo n.º 24
0
        public static void SaveSummaryPayFeeMonthly()
        {
            decimal totalSlowFee, totalDebtFee;

            using (var db = new RentBikeEntities())
            {
                try
                {
                    var stores = db.Stores.Where(c => c.ACTIVE == true).ToList();
                    foreach (var store in stores)
                    {
                        if (db.SummaryPayFeeMonthlies.Any(c => c.SUMMURY_DATE == DateTime.Today &&
                                                          c.STORE_ID == store.ID))
                        {
                            continue;
                        }

                        GetSummuryFeeMonthly(out totalSlowFee, out totalDebtFee, store.ID);

                        SummaryPayFeeMonthly sum1 = new SummaryPayFeeMonthly();
                        sum1.STORE_ID         = store.ID;
                        sum1.STORE_NAME       = store.NAME;
                        sum1.SUMMURY_FEE      = totalSlowFee;
                        sum1.SUMMURY_FEE_TYPE = (int)SUMMURY_FEE_TYPE.SLOW_FEE;
                        sum1.SUMMURY_DATE     = DateTime.Today;
                        sum1.NOTE             = Constants.SUMMURY_SLOW_FEE;
                        sum1.CREATED_DATE     = DateTime.Now;
                        sum1.CREATED_BY       = Constants.DUMMY_USER;
                        sum1.UPDATED_DATE     = DateTime.Now;
                        sum1.UPDATED_BY       = Constants.DUMMY_USER;
                        db.SummaryPayFeeMonthlies.Add(sum1);

                        SummaryPayFeeMonthly sum2 = new SummaryPayFeeMonthly();
                        sum2.STORE_ID         = store.ID;
                        sum2.STORE_NAME       = store.NAME;
                        sum2.SUMMURY_FEE      = totalDebtFee;
                        sum2.SUMMURY_FEE_TYPE = (int)SUMMURY_FEE_TYPE.DEBT_FEE;
                        sum2.SUMMURY_DATE     = DateTime.Today;
                        sum2.NOTE             = Constants.SUMMURY_DEBT_FEE;
                        sum2.CREATED_DATE     = DateTime.Now;
                        sum2.CREATED_BY       = Constants.DUMMY_USER;
                        sum2.UPDATED_DATE     = DateTime.Now;
                        sum2.UPDATED_BY       = Constants.DUMMY_USER;
                        db.SummaryPayFeeMonthlies.Add(sum2);
                    }
                    db.SaveChanges();
                }
                catch (System.Data.Entity.Validation.DbEntityValidationException e)
                {
                    foreach (var eve in e.EntityValidationErrors)
                    {
                        Logger.Log(string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                                 eve.Entry.Entity.GetType().Name, eve.Entry.State));
                        foreach (var ve in eve.ValidationErrors)
                        {
                            Logger.Log(string.Format("- Property: \"{0}\", Error: \"{1}\"",
                                                     ve.PropertyName, ve.ErrorMessage));
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.Log(ex.Message + Environment.NewLine + ex.StackTrace);
                }
            }
        }