public ActionResult CommitPromotionParticipant(PromotionParticipantViewModel viewModel)
        {
            ViewResult result = (ViewResult)EditPromotionParticipant(viewModel);
            PDQGroup   item   = result.Model as PDQGroup;

            if (item == null)
            {
                return(result);
            }

            if (!viewModel.UID.HasValue)
            {
                this.ModelState.AddModelError("UID", "請選擇學員!!");
                ViewBag.ModelState = this.ModelState;
                return(View("~/Views/Shared/ReportInputError.ascx"));
            }

            var quest = item.PDQQuestion.First();

            var taskItem = new PDQTask
            {
                QuestionID   = quest.QuestionID,
                UID          = viewModel.UID.Value,
                TaskDate     = DateTime.Now,
                PDQTaskBonus = new PDQTaskBonus {
                },
            };

            models.GetTable <PDQTask>().InsertOnSubmit(taskItem);
            models.SubmitChanges();

            return(Json(new { result = true, bonus = taskItem != null }));
        }
        public ActionResult InquirePromotionParticipant(PromotionParticipantViewModel viewModel)
        {
            ViewResult result = (ViewResult)EditPromotionParticipant(viewModel);
            PDQGroup   item   = result.Model as PDQGroup;

            if (item == null)
            {
                return(result);
            }

            IQueryable <UserProfile> items;

            viewModel.UserName = viewModel.UserName.GetEfficientString();
            if (viewModel.UserName == null)
            {
                this.ModelState.AddModelError("UserName", "請輸學員名稱!!");
                ViewBag.ModelState = this.ModelState;
                return(View("~/Views/Shared/ReportInputError.ascx"));
            }
            else
            {
                items = models.GetTable <UserProfile>()
                        .Where(l => l.RealName.Contains(viewModel.UserName) || l.Nickname.Contains(viewModel.UserName))
                        .FilterByLearner(models, true)
                        .OrderBy(l => l.RealName);
            }

            return(View("~/Views/CoachFacet/Module/VipSelector.ascx", items));
        }
        public ActionResult SelectPromotionParticipant(PromotionParticipantViewModel viewModel)
        {
            ViewResult result = (ViewResult)EditPromotionParticipant(viewModel);
            PDQGroup   item   = result.Model as PDQGroup;

            if (item == null)
            {
                return(result);
            }

            return(View("~/Views/Promotion/Module/SelectPromotionParticipant.ascx", item));
        }
        public ActionResult ListPromotionParticipant(PromotionParticipantViewModel viewModel)
        {
            ViewResult result = (ViewResult)EditPromotionParticipant(viewModel);
            PDQGroup   item   = result.Model as PDQGroup;

            if (item == null)
            {
                return(result);
            }

            var pdq   = item.PDQQuestion.First();
            var items = models.GetTable <PDQTask>().Where(t => t.QuestionID == pdq.QuestionID);

            ViewBag.DataItem = item;

            return(View("~/Views/Promotion/Module/PromotionParticipantList.ascx", items));
        }
        public ActionResult EditBonusPromotion(PromotionViewModel viewModel)
        {
            PDQGroup item = loadPromotionItem(viewModel);

            if (item != null)
            {
                var pdq    = item.PDQQuestion.First();
                var pdqExt = pdq.PDQQuestionExtension;

                viewModel.GroupID        = item.GroupID;
                viewModel.GroupName      = item.GroupName;
                viewModel.StartDate      = item.StartDate;
                viewModel.EndDate        = item.EndDate;
                viewModel.QuestionID     = pdq.QuestionID;
                viewModel.Question       = pdq.Question;
                viewModel.BonusPoint     = pdqExt.BonusPoint;
                viewModel.Status         = (Naming.LessonSeriesStatus?)pdqExt.Status;
                viewModel.AwardingAction = (Naming.BonusAwardingAction?)pdqExt.AwardingAction;
                viewModel.CreationTime   = pdqExt.CreationTime;
            }

            ViewBag.ViewModel = viewModel;
            return(View("~/Views/Promotion/Module/EditBonusPromotion.ascx", item));
        }
        public ActionResult CommitBonusPromotion(PromotionViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;

            if (!viewModel.BonusPoint.HasValue || viewModel.BonusPoint < 1)
            {
                ModelState.AddModelError("BonusPoint", "請輸入贈送點數!!");
            }

            if (!viewModel.StartDate.HasValue)
            {
                ModelState.AddModelError("StartDate", "請選擇活動起日!!");
            }

            viewModel.GroupName = viewModel.GroupName.GetEfficientString();
            if (viewModel.GroupName == null)
            {
                ModelState.AddModelError("GroupName", "請輸入活動名稱!!");
            }

            viewModel.Question = viewModel.Question.GetEfficientString();
            if (viewModel.Question == null)
            {
                ModelState.AddModelError("Question", "請輸入活動說明!!");
            }

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

            var                  item = loadPromotionItem(viewModel);
            PDQQuestion          pdq;
            PDQQuestionExtension pdqExt;

            if (item == null)
            {
                var table = models.GetTable <PDQGroup>();
                item = new PDQGroup
                {
                };
                item.GroupID = (table.OrderByDescending(p => p.GroupID).FirstOrDefault()?.GroupID + 1) ?? 1;

                table.InsertOnSubmit(item);

                pdq = new PDQQuestion
                {
                    PDQGroup = item
                };
                pdqExt = new PDQQuestionExtension
                {
                    PDQQuestion    = pdq,
                    CreationTime   = DateTime.Now,
                    AwardingAction = (int)Naming.BonusAwardingAction.手動,
                };
            }
            else
            {
                pdq    = item.PDQQuestion.First();
                pdqExt = pdq.PDQQuestionExtension;
            }

            item.GroupName    = viewModel.GroupName;
            item.StartDate    = viewModel.StartDate;
            item.EndDate      = viewModel.EndDate;
            pdq.Question      = viewModel.Question;
            pdqExt.BonusPoint = viewModel.BonusPoint;

            models.SubmitChanges();

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