コード例 #1
0
        public ActionResult Delete(int id)
        {
            string    resultMessage     = "Бонусное задание успешно удалено.";
            BonusTask bonusTaskToDelete = bonusTaskRepository.Get(id);
            int       gameId            = bonusTaskToDelete.Game.Id;

            if (bonusTaskToDelete != null)
            {
                bonusTaskRepository.Delete(bonusTaskToDelete);

                try
                {
                    bonusTaskRepository.DbContext.CommitChanges();
                }
                catch
                {
                    resultMessage = "По ряду причин бонусное задание не может быть удалено. Возможно, оно еще где-то нужно.";
                    bonusTaskRepository.DbContext.RollbackTransaction();
                }
            }
            else
            {
                resultMessage = "Удаляемое бонусное задание не найдено. Возможно, оно уже удалено.";
            }

            Message = resultMessage;
            return(this.RedirectToAction <GamesController>(c => c.Edit(gameId)));
        }
コード例 #2
0
        public AjaxFormResult SaveBonus([BonusTaskBinder(Fetch = true)] BonusTask bonusTask)
        {
            var response = new AjaxFormResult();

            try
            {
                if (ViewData.ModelState.IsValid && bonusTask.IsValid())
                {
                    if (bonusTask.Id == 0)
                    {
                        bonusTask.Game = User.Game;
                        bonusTaskRepository.SaveOrUpdate(bonusTask);

                        response.ExtraParams["newID"] = bonusTask.Id.ToString();
                        response.ExtraParams["name"]  = bonusTask.Name;
                    }
                    response.Success = true;
                }
                else
                {
                    response.Success = false;
                    response.Errors.Add(new FieldError("BonusTask_ID", "The ID field is required"));

                    taskRepository.DbContext.RollbackTransaction();
                }
            }
            catch (Exception e)
            {
                response.Success            = false;
                response.ExtraParams["msg"] = e.ToString();
            }
            return(response);
        }
コード例 #3
0
        private BonusTask CreateBonusTask()
        {
            BonusTask bonusTask = CreateTransientBonusTask();

            EntityIdSetter.SetIdOf <int>(bonusTask, 1);
            return(bonusTask);
        }
コード例 #4
0
        public ActionResult Show(int id)
        {
            BonusTask bonusTask = bonusTaskRepository.Get(id);

            this.SetBreadcrumbText(bonusTask.Name);
            return(View(bonusTask));
        }
コード例 #5
0
        public void ReportTaskProgress(BonusTaskType type, int amount = 1)
        {
            if (CurrentBonusTask == null)
            {
                return;
            }
            if (CurrentBonusTask.Type != type)
            {
                return;
            }

            CurrentBonusTask.CurrentCount += amount;

            if (CurrentBonusTask.CurrentCount >= CurrentBonusTask.MaxCount)
            {
                GameManager.Instance.AddToAgility(
                    "Bonus Aufgabe erledigt",
                    CurrentBonusTask.Bonus,
                    GameManager.Instance.player.OverheadPosition);

                CurrentBonusTask = null;
            }

            UpdateBonusTaskText();
        }
コード例 #6
0
 private void TransferFormValuesTo(BonusTask bonusTaskToUpdate, BonusTask bonusTaskFromForm)
 {
     bonusTaskToUpdate.Name         = bonusTaskFromForm.Name;
     bonusTaskToUpdate.TaskText     = bonusTaskFromForm.TaskText;
     bonusTaskToUpdate.StartTime    = bonusTaskFromForm.StartTime;
     bonusTaskToUpdate.FinishTime   = bonusTaskFromForm.FinishTime;
     bonusTaskToUpdate.IsIndividual = bonusTaskFromForm.IsIndividual;
 }
コード例 #7
0
        public AjaxStoreResult GetBonus(int gameId, int bonusId)
        {
            BonusTask bonusTask = bonusTaskRepository.Get(bonusId);

            return(new AjaxStoreResult(new List <BonusTask> {
                bonusTask
            }, 1));
        }
コード例 #8
0
        public void CanEnsureBonusTaskCreationIsValid()
        {
            BonusTask  bonusTaskFromForm = new BonusTask();
            ViewResult result            = controller.Create(bonusTaskFromForm).AssertViewRendered();

            result.ViewData.Model.ShouldNotBeNull();
            result.ViewData.Model.ShouldBeOfType(typeof(BonusTasksController.BonusTaskFormViewModel));
        }
コード例 #9
0
        public void CanCreateBonusTask()
        {
            BonusTask             bonusTaskFromForm = CreateTransientBonusTask();
            RedirectToRouteResult redirectResult    = controller.Create(bonusTaskFromForm)
                                                      .AssertActionRedirect().ToAction("Edit");

            controller.TempData[ControllerEnums.GlobalViewDataProperty.PageMessage.ToString()].ToString()
            .ShouldContain("успешно создано");
        }
コード例 #10
0
        public void CanUpdateBonusTask()
        {
            BonusTask bonusTaskFromForm = CreateTransientBonusTask();

            EntityIdSetter.SetIdOf <int>(bonusTaskFromForm, 1);
            RedirectToRouteResult redirectResult = controller.Edit(bonusTaskFromForm)
                                                   .AssertActionRedirect().ToAction("Edit");

            controller.TempData[ControllerEnums.GlobalViewDataProperty.PageMessage.ToString()].ToString()
            .ShouldContain("успешно изменено");
        }
コード例 #11
0
        public void CanCompareBonusTasks()
        {
            BonusTask instance = new BonusTask();

            instance.Name = "New Code";

            BonusTask instanceToCompareTo = new BonusTask();

            instanceToCompareTo.Name = "New Code";

            instance.ShouldEqual(instanceToCompareTo);
        }
コード例 #12
0
        public AjaxStoreResult CreateBonus()
        {
            BonusTask task = new BonusTask();

            if (User != null)
            {
                task.StartTime  = User.Game.GameDate.AddMinutes(60);
                task.FinishTime = User.Game.GameDate.AddMinutes(User.Game.TotalTime);
            }
            return(new AjaxStoreResult(new List <BonusTask> {
                task
            }, 1));
        }
コード例 #13
0
        public object BindCooliteModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            NameValueCollection values = controllerContext.HttpContext.Request.Form;

            fetch = !String.IsNullOrEmpty(values["id"]);
            BonusTask task = fetch ? taskRepository.Get(Convert.ToInt32(values["BonusTask.Id"])) : new BonusTask();

            task.Name         = values["BonusTask.Name"];
            task.TaskText     = values["BonusTask.TaskText"];
            task.StartTime    = Convert.ToDateTime(values["BonusTask.StartTime"]);
            task.FinishTime   = Convert.ToDateTime(values["BonusTask.FinishTime"]);
            task.IsIndividual = values["BonusTask.IsIndividual"] != null;

            return(task);
        }
コード例 #14
0
        public AjaxResult DeleteBonus(int id)
        {
            var response = new AjaxResult();

            try
            {
                BonusTask bonusTask = bonusTaskRepository.Get(id);
                response.ExtraParamsResponse.Add(new Parameter("id", bonusTask.Id.ToString()));
                bonusTaskRepository.Delete(bonusTask);
            }
            catch (Exception e)
            {
                response.ErrorMessage = e.Message;
            }
            return(response);
        }
コード例 #15
0
        public ActionResult Create([BonusTaskBinder(Fetch = false)] BonusTask bonusTask)
        {
            if (ViewData.ModelState.IsValid && bonusTask.IsValid())
            {
                bonusTask.Game = User.Game;
                bonusTaskRepository.SaveOrUpdate(bonusTask);

                TempData[ControllerEnums.GlobalViewDataProperty.PageMessage.ToString()] =
                    "Бонусное задание успешно создано.";
                return(this.RedirectToAction <GamesController>(c => c.Edit(bonusTask.Game.Id)));
            }

            BonusTaskFormViewModel viewModel = BonusTaskFormViewModel.CreateBonusTaskFormViewModel();

            viewModel.BonusTask = bonusTask;
            return(View(viewModel));
        }
コード例 #16
0
        /// <summary>
        /// Creates a valid, transient BonusTask; typical of something retrieved back from a form submission
        /// </summary>
        private BonusTask CreateTransientBonusTask()
        {
            BonusTask bonusTask = new BonusTask()
            {
                Name         = "New Code",
                TaskText     = "Task description",
                StartTime    = DateTime.Parse("01.01.75 0:00:00"),
                FinishTime   = DateTime.Parse("01.01.75 0:00:00"),
                IsIndividual = false,
                Game         = new Game()
                {
                    Name = "New game"
                }
            };

            return(bonusTask);
        }
コード例 #17
0
        public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            NameValueCollection values = controllerContext.HttpContext.Request.Form;

            if (values.AllKeys.Contains("id"))
            {
                return(BindCooliteModel(controllerContext, bindingContext));
            }

            BonusTask task = fetch ? taskRepository.Get(Convert.ToInt32(values["BonusTask.Id"])) : new BonusTask();

            task.Name         = values["BonusTask.Name"];
            task.TaskText     = values["BonusTask.TaskText"];
            task.StartTime    = Convert.ToDateTime(values["BonusTask.StartTime"]);
            task.FinishTime   = Convert.ToDateTime(values["BonusTask.FinishTime"]);
            task.IsIndividual = Convert.ToBoolean(values["BonusTask.IsIndividual"].Split(new char[] { ',' })[0]);

            return(task);
        }
コード例 #18
0
        private void Update()
        {
            _bonusPullTimer -= Time.deltaTime;
            if (_bonusPullTimer <= 0 && CurrentBonusTask == null)
            {
                if (!BonusTaskProvider.HasTasksQueued())
                {
                    return;
                }

                CurrentBonusTask = BonusTaskProvider.GetNextBonusTask();
                CurrentBonusTask.Start();
                UpdateBonusTaskText();
            }

            if (_bonusPullTimer <= 0)
            {
                _bonusPullTimer = _bonusPullMaxTime;
            }
        }
コード例 #19
0
        public ActionResult Edit([BonusTaskBinder(Fetch = true)] BonusTask bonusTask)
        {
            BonusTask bonusTaskToUpdate = bonusTaskRepository.Get(bonusTask.Id);

            TransferFormValuesTo(bonusTaskToUpdate, bonusTask);

            if (ViewData.ModelState.IsValid && bonusTask.IsValid())
            {
                Message = "Бонусное задание успешно изменено.";
                return(this.RedirectToAction <GamesController>(c => c.Edit(bonusTaskToUpdate.Game.Id)));
            }
            else
            {
                bonusTaskRepository.DbContext.RollbackTransaction();

                BonusTaskFormViewModel viewModel = BonusTaskFormViewModel.CreateBonusTaskFormViewModel();
                viewModel.BonusTask = bonusTask;
                return(View(viewModel));
            }
        }