Example #1
0
        public ActionResult DeleteLessonPrice(LessonPriceQueryViewModel viewModel)
        {
            LessonPriceType item;

            try
            {
                item = models.DeleteAny <LessonPriceType>(p => p.PriceID == viewModel.PriceID);
                if (item != null)
                {
                    return(Json(new { result = true }));
                }
                return(Json(new { result = false, message = "資料錯誤!!" }));
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            item = models.GetTable <LessonPriceType>().Where(l => l.PriceID == viewModel.PriceID).FirstOrDefault();
            if (item == null)
            {
                return(Json(new { result = false, message = "資料錯誤!!" }));
            }

            item.Status = (int)Naming.LessonSeriesStatus.已停用;
            models.SubmitChanges();

            return(Json(new { result = true, message = "價目已使用,無法刪除,已改為停用!!" }));
        }
Example #2
0
        public ActionResult EditPriceSeries(LessonPriceQueryViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;

            viewModel.ListPriceSeries = new int?[16];
            viewModel.PriceSeriesID   = new int?[16];
            viewModel.ReadOnly        = new bool?[16];

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

            if (item != null)
            {
                viewModel.Year     = item.Year;
                viewModel.BranchID = item.LessonPriceType.BranchID;
                viewModel.Status   = item.Status;

                var priceItems = item.AllLessonPrice.ToArray();
                var limitItems = new int[] { 1, 25, 50, 75 };
                for (int i = 0; i < limitItems.Length; i++)
                {
                    var price = priceItems.Where(p => p.LowerLimit == limitItems[i] && p.DurationInMinutes == 60 && !p.Description.Contains("舊會員")).FirstOrDefault();
                    if (price != null)
                    {
                        viewModel.ListPriceSeries[i * 4] = price.ListPrice;
                        viewModel.PriceSeriesID[i * 4]   = price.PriceID;
                        viewModel.ReadOnly[i * 4]        = price.RegisterLesson.Count > 0 || price.CourseContract.Count > 0;
                    }
                    price = priceItems.Where(p => p.LowerLimit == limitItems[i] && p.DurationInMinutes == 90 && !p.Description.Contains("舊會員")).FirstOrDefault();
                    if (price != null)
                    {
                        viewModel.ListPriceSeries[i * 4 + 1] = price.ListPrice;
                        viewModel.PriceSeriesID[i * 4 + 1]   = price.PriceID;
                        viewModel.ReadOnly[i * 4 + 1]        = price.RegisterLesson.Count > 0 || price.CourseContract.Count > 0;
                    }
                    price = priceItems.Where(p => p.LowerLimit == limitItems[i] && p.DurationInMinutes == 60 && p.Description.Contains("舊會員")).FirstOrDefault();
                    if (price != null)
                    {
                        viewModel.ListPriceSeries[i * 4 + 2] = price.ListPrice;
                        viewModel.PriceSeriesID[i * 4 + 2]   = price.PriceID;
                        viewModel.ReadOnly[i * 4 + 2]        = price.RegisterLesson.Count > 0 || price.CourseContract.Count > 0;
                    }
                    price = priceItems.Where(p => p.LowerLimit == limitItems[i] && p.DurationInMinutes == 90 && p.Description.Contains("舊會員")).FirstOrDefault();
                    if (price != null)
                    {
                        viewModel.ListPriceSeries[i * 4 + 3] = price.ListPrice;
                        viewModel.PriceSeriesID[i * 4 + 3]   = price.PriceID;
                        viewModel.ReadOnly[i * 4 + 3]        = price.RegisterLesson.Count > 0 || price.CourseContract.Count > 0;
                    }
                }
            }

            return(View("~/Views/LessonPrice/Module/EditPriceSeries.ascx"));
        }
Example #3
0
        public ActionResult EditProjectCourse(LessonPriceQueryViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;
            var item = models.GetTable <LessonPriceType>().Where(p => p.PriceID == viewModel.PriceID).FirstOrDefault();

            if (item != null)
            {
                viewModel.Description       = item.Description;
                viewModel.DurationInMinutes = item.DurationInMinutes;
                viewModel.BranchID          = item.BranchID;
                viewModel.ListPrice         = item.ListPrice;
                viewModel.Status            = item.Status;
            }
            return(View("~/Views/LessonPrice/Module/EditProjectCourse.ascx", item));
        }
Example #4
0
        public ActionResult DeletePriceSeries(LessonPriceQueryViewModel viewModel)
        {
            try
            {
                models.ExecuteCommand("update LessonPriceSeries set Status = {0} where PriceID = {1}", Naming.LessonSeriesStatus.已停用, viewModel.SeriesID);
                models.ExecuteCommand("update LessonPriceType set Status = {0} where SeriesID = {1}", Naming.LessonSeriesStatus.已停用, viewModel.SeriesID);
                models.ExecuteCommand("delete LessonPriceType where SeriesID = {0}", viewModel.SeriesID);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                return(Json(new { result = true, message = "價目已使用,無法刪除,已改為停用!!" }));
            }

            return(Json(new { result = true }));
        }
Example #5
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 }));
        }
Example #6
0
        public ActionResult InquirePriceSeries(LessonPriceQueryViewModel viewModel)
        {
            IQueryable <LessonPriceSeries> items = models.GetTable <LessonPriceSeries>();

            if (viewModel.Status.HasValue)
            {
                items = items.Where(p => p.Status == viewModel.Status);
            }
            if (viewModel.Year.HasValue)
            {
                items = items.Where(p => p.Year == viewModel.Year);
            }
            if (viewModel.BranchID.HasValue)
            {
                items = items.Where(p => p.LessonPriceType.BranchID == viewModel.BranchID);
            }

            return(View("~/Views/LessonPrice/Module/PriceSeriesList.ascx", items));
        }
Example #7
0
        public ActionResult InquireProjectCourse(LessonPriceQueryViewModel viewModel)
        {
            IQueryable <LessonPriceType> items = models.GetTable <LessonPriceType>()
                                                 .Where(p => !p.SeriesID.HasValue)
                                                 .Where(p => p.BranchID.HasValue)
                                                 .Where(p => p.IsInternalLesson == null)
                                                 .Where(p => p.IsWelfareGiftLesson == null)
                                                 .Where(p => p.Status == (int)Naming.LessonPriceStatus.一般課程 || p.Status == (int)Naming.LessonPriceStatus.已刪除);

            if (viewModel.Status.HasValue)
            {
                items = items.Where(p => p.Status == viewModel.Status);
            }
            if (viewModel.BranchID.HasValue)
            {
                items = items.Where(p => p.BranchID == viewModel.BranchID);
            }

            return(View("~/Views/LessonPrice/Module/ProjectCourseList.ascx", items));
        }
Example #8
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 }));
        }