Beispiel #1
0
        public ActionResult CommitLessonPrice(LessonPriceViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;

            if (!ModelState.IsValid)
            {
                ViewBag.ModelState = ModelState;
                return(View("EditLessonPrice"));
            }

            LessonPriceType item = models.GetTable <LessonPriceType>()
                                   .Where(p => p.PriceID == viewModel.PriceID).FirstOrDefault();

            if (item == null)
            {
                item = new LessonPriceType
                {
                    PriceID = models.GetTable <LessonPriceType>().Select(p => p.PriceID).Max() + 1,
                    Status  = (int)Naming.DocumentLevelDefinition.正常
                };
                models.GetTable <LessonPriceType>().InsertOnSubmit(item);
            }

            item.CoachPayoff           = viewModel.CoachPayoff;
            item.CoachPayoffCreditCard = viewModel.CoachPayoffCreditCard;
            item.Description           = viewModel.Description;
            item.UsageType             = viewModel.UsageType;
            item.ListPrice             = viewModel.ListPrice;

            models.SubmitChanges();
            ViewBag.Message = "資料已儲存!!";

            return(ConfigureAll());
        }
        public static LessonPriceType GetOriginalSeriesPrice(this LessonPriceType priceItem, GenericManager <BFDataContext> models)
        {
            var seriesItem = models.GetTable <V_LessonUnitPrice>()
                             .Where(p => p.DurationInMinutes == priceItem.DurationInMinutes)
                             .Where(p => p.BranchID == priceItem.BranchID)
                             .Join(models.GetTable <LessonPriceType>(),
                                   p => p.PriceID, s => s.PriceID, (p, s) => s)
                             .OrderByDescending(s => s.PriceID);

            return(seriesItem.FirstOrDefault());

            //return item.LessonPriceType.CurrentPriceSeries?.AllLessonPrice.Where(p => p.LowerLimit == 1).FirstOrDefault();
        }
Beispiel #3
0
        public ActionResult CommitProjectCourse(LessonPriceQueryViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;

            viewModel.Description = viewModel.Description.GetEfficientString();
            if (viewModel.Description == null)
            {
                ModelState.AddModelError("Description", "請輸入專案名稱!!");
            }

            if (!viewModel.ListPrice.HasValue)
            {
                ModelState.AddModelError("ListPrice", "請輸入價格!!");
            }

            if (!ModelState.IsValid)
            {
                ViewBag.ModelState = ModelState;
                return(View("~/Views/Shared/ReportInputError.ascx"));
            }

            LessonPriceType item = models.GetTable <LessonPriceType>()
                                   .Where(p => p.PriceID == viewModel.PriceID).FirstOrDefault();

            if (item == null)
            {
                item = new LessonPriceType
                {
                    PriceID    = models.GetTable <LessonPriceType>().Select(p => p.PriceID).Max() + 1,
                    Status     = (int)Naming.LessonSeriesStatus.已啟用,
                    LowerLimit = 999
                };
                models.GetTable <LessonPriceType>().InsertOnSubmit(item);
            }

            item.Description       = viewModel.Description;
            item.ListPrice         = item.CoachPayoffCreditCard = item.CoachPayoff = viewModel.ListPrice;
            item.Status            = viewModel.Status;
            item.BranchID          = viewModel.BranchID;
            item.DurationInMinutes = viewModel.DurationInMinutes;

            models.SubmitChanges();

            return(Json(new { result = true }));
        }
Beispiel #4
0
        public ActionResult EditLessonPrice(int?priceID)
        {
            LessonPriceViewModel viewModel = new LessonPriceViewModel {
            };
            LessonPriceType item           = models.GetTable <LessonPriceType>().Where(p => p.PriceID == priceID).FirstOrDefault();

            if (item != null)
            {
                viewModel.PriceID               = item.PriceID;
                viewModel.Description           = item.Description;
                viewModel.ListPrice             = item.ListPrice;
                viewModel.Status                = item.Status;
                viewModel.UsageType             = item.UsageType;
                viewModel.CoachPayoff           = item.CoachPayoff;
                viewModel.CoachPayoffCreditCard = item.CoachPayoffCreditCard;
            }
            ViewBag.ViewModel = viewModel;

            return(View());
        }
Beispiel #5
0
        public ActionResult UpdateLessonPrice(int priceID, int status)
        {
            LessonPriceType item = models.GetTable <LessonPriceType>().Where(p => p.PriceID == priceID).FirstOrDefault();

            if (item == null)
            {
                ViewBag.Message = "課程類別資料不存在!!";
                return(LessonPriceTypeList());
            }

            item.Status = status;
            models.SubmitChanges();

            if (status == (int)Naming.DocumentLevelDefinition.正常)
            {
                ViewBag.Message = "課程類別已啟用!!";
            }
            else if (status == (int)Naming.DocumentLevelDefinition.已刪除)
            {
                ViewBag.Message = "課程類別已停售!!";
            }

            return(ConfigureAll());
        }
Beispiel #6
0
        public ActionResult CommitPriceSeries(LessonPriceQueryViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;

            if (viewModel.ListPriceSeries == null || viewModel.ListPriceSeries.Length != 16 ||
                viewModel.ListPriceSeries.Any(p => !p.HasValue))
            {
                ModelState.AddModelError("ListPriceSeries", "請輸入價格!!");
            }

            if (!viewModel.BranchID.HasValue)
            {
                ModelState.AddModelError("BranchID", "請選擇分店!!");
            }

            if (!ModelState.IsValid)
            {
                ViewBag.ModelState = ModelState;
                return(View("~/Views/Shared/ReportInputError.ascx"));
            }

            LessonPriceType[] items = new LessonPriceType[16];
            var lowerLimit          = new int[] { 1, 25, 50, 75 };
            var upperBound          = new int?[] { 25, 50, 75, (int?)null };
            var duration            = new int[] { 60, 90 };
            //【2017-02】《南京小巨蛋》75堂 / 60分鐘(舊會員續約)
            var info    = new String[] { null, "(舊會員續約)" };
            var priceID = models.GetTable <LessonPriceType>().Select(p => p.PriceID).Max() + 1;
            var series  = models.GetTable <LessonPriceSeries>().Where(s => s.Year == viewModel.Year)
                          .Where(s => s.LessonPriceType.BranchID == viewModel.BranchID)
                          .OrderByDescending(s => s.PeriodNo).FirstOrDefault();
            var periodNo = series == null ? 1 : series.PeriodNo.Value + 1;
            var branch   = models.GetTable <BranchStore>().Where(b => b.BranchID == viewModel.BranchID).First();

            LessonPriceSeries item = models.GetTable <LessonPriceSeries>()
                                     .Where(p => p.PriceID == viewModel.SeriesID).FirstOrDefault();

            if (item == null)
            {
                item = new LessonPriceSeries
                {
                    PeriodNo = periodNo
                };
                models.GetTable <LessonPriceSeries>().InsertOnSubmit(item);
            }

            item.Status = viewModel.Status;
            item.Year   = viewModel.Year;

            for (int i = 0; i < lowerLimit.Length; i++)
            {
                for (int f = 0; f < info.Length; f++)
                {
                    for (int d = 0; d < duration.Length; d++)
                    {
                        var idx = 4 * i + 2 * f + d;
                        items[idx] = models.GetTable <LessonPriceType>().Where(p => p.PriceID == viewModel.PriceSeriesID[idx]).FirstOrDefault();
                        if (items[idx] == null)
                        {
                            items[idx] = new LessonPriceType
                            {
                                PriceID = priceID++
                            };
                            //items[idx].CurrentPriceSeries = item;
                            models.GetTable <LessonPriceType>().InsertOnSubmit(items[idx]);
                        }

                        items[idx].Description = String.Format("【{0}-{1:00}】《{2}》{3}堂 / {4}分鐘{5}",
                                                               viewModel.Year, item.PeriodNo, branch.BranchName, lowerLimit[i], duration[d], info[f]);
                        items[idx].ListPrice         = items[idx].CoachPayoff = items[idx].CoachPayoffCreditCard = viewModel.ListPriceSeries[idx];
                        items[idx].Status            = viewModel.Status;
                        items[idx].BranchID          = branch.BranchID;
                        items[idx].LowerLimit        = lowerLimit[i];
                        items[idx].UpperBound        = upperBound[i];
                        items[idx].DurationInMinutes = duration[d];
                        if (f == 1)
                        {
                            if (!items[idx].LessonPriceProperty.Any(p => p.PropertyID == (int)Naming.LessonPriceFeature.會員續約))
                            {
                                items[idx].LessonPriceProperty.Add(new LessonPriceProperty
                                {
                                    PropertyID = (int)Naming.LessonPriceFeature.會員續約
                                });
                            }
                        }
                    }
                }
            }

            if (item.LessonPriceType == null)
            {
                item.LessonPriceType = items[0];
            }

            models.SubmitChanges();

            foreach (var p in items)
            {
                if (p.SeriesID != item.PriceID)
                {
                    p.SeriesID = item.PriceID;
                }
            }
            models.SubmitChanges();

            if (item.Status == (int)Naming.LessonSeriesStatus.已啟用)
            {
                models.ExecuteCommand(@"UPDATE LessonPriceSeries
                        SET        Status = 0
                        FROM     LessonPriceSeries INNER JOIN
                                       LessonPriceType ON LessonPriceSeries.PriceID = LessonPriceType.PriceID
                        WHERE   (LessonPriceSeries.PriceID <> {0}) AND (LessonPriceType.BranchID = {1})", item.PriceID, item.LessonPriceType.BranchID);
                models.ExecuteCommand(@"UPDATE LessonPriceType
                        SET        Status = 0
                        FROM     LessonPriceSeries INNER JOIN
                                       LessonPriceType ON LessonPriceSeries.PriceID = LessonPriceType.SeriesID
                        WHERE   (LessonPriceSeries.PriceID <> {0}) AND (LessonPriceType.BranchID = {1})", item.PriceID, item.LessonPriceType.BranchID);
            }

            return(Json(new { result = true }));
        }