Пример #1
0
        public async Task CreateCommonPlaceMission_Success()
        {
            // Действие
            var missions = await _service.GetMissions();

            int count = missions.Count;

            var newMission = new MissionUi
            {
                Name             = "CommonPlace mission",
                Description      = "CommonPlace",
                PhotoUrl         = "https://pp.vk.me/c543109/v543109262/11668/-YwppEKJVx0.jpg",
                Difficulty       = 1,
                ExecutionType    = ExecutionType.CommonPlace,
                CommonPlaceAlias = "CM 5",
                AgeFrom          = 10,
                AgeTo            = 80
            };

            await _controller.Create(newMission);

            missions = await _service.GetMissions();

            // Утверждение
            Assert.IsNotEmpty(missions);
            Assert.AreEqual("CommonPlace mission", missions.Last().Name);
            Assert.AreEqual(count + 1, missions.Count);
        }
Пример #2
0
        public async Task CreateRightAnswerMission()
        {
            // Действие
            var missions = await _service.GetMissions();

            int count = missions.Count;

            var newMission = new MissionUi
            {
                Name           = "RightAnswer mission",
                Description    = "RightAnswer",
                PhotoUrl       = "https://pp.vk.me/c543109/v543109262/11668/-YwppEKJVx0.jpg",
                Difficulty     = 1,
                ExecutionType  = ExecutionType.RightAnswer,
                CorrectAnswers = "один;два",
                AgeFrom        = 10,
                AgeTo          = 80
            };

            await _controller.Create(newMission);

            missions = await _service.GetMissions();

            // Утверждение
            Assert.IsNotEmpty(missions);
            Assert.AreEqual("RightAnswer mission", missions.Last().Name);
            Assert.AreEqual(count + 1, missions.Count);
        }
Пример #3
0
        /// <summary>
        ///     Creates this instance.
        /// </summary>
        /// <returns>
        ///     ActionResult.
        /// </returns>
        public async Task <ActionResult> Create()
        {
            var model = new MissionUi();

            SetModelToTempData(model);
            ViewBag.CommonPlaces = await GetCommonPlaces();

            ViewBag.Missions = await GetBaseMissions();

            return(View(model));
        }
Пример #4
0
        private async Task <ActionResult> ErrorResult(MissionUi mission)
        {
            var personQualities = (await _personQualityService.GetPersonQualities());

            ViewBag.CommonPlaces = await GetCommonPlaces();

            ViewBag.PersonQualities = personQualities;
            ViewBag.Missions        = await GetBaseMissions(mission.Id);

            SetModelToTempData(mission);
            SetErrorsToTempData(ModelState);

            return(View(mission));
        }
Пример #5
0
        public async Task Edit()
        {
            // Действие
            var result     = (ViewResult)(await _controller.Index(null));
            var missions   = (IEnumerable <Mission>)result.Model;
            var oldMission = missions.Last();
            var mission    = new MissionUi
            {
                Id          = oldMission.Id,
                Name        = "Updated mission",
                Description = oldMission.Description,
                Difficulty  = oldMission.Difficulty
            };
            var editResult = (RedirectToRouteResult)(await _controller.Edit(mission));

            result = (ViewResult)(await _controller.Details(oldMission.Id));
            var missionAfterEdit = (Mission)result.Model;

            // Утверждение
            Assert.IsNotNull(editResult);
            Assert.IsNotNull(missions);

            Assert.AreEqual("Updated mission", missionAfterEdit.Name);
        }
Пример #6
0
 private void SetModelToTempData(MissionUi model)
 {
     TempData[MissionTempKey] = model;
 }
Пример #7
0
        private async Task <ActionResult> AddUpdateMission(MissionUi mission, bool createOperation)
        {
            if (ModelState.IsValid)
            {
                OperationResult result;
                if (mission.ExecutionType == ExecutionType.CommonPlace)
                {
                    if (createOperation)
                    {
                        var aliasExist = await _commonPlacesService.CheckAliasExist(mission.CommonPlaceAlias);

                        if (aliasExist)
                        {
                            ViewBag.PersonQualities = await _personQualityService.GetPersonQualities();

                            ModelState.AddModelError("CommonPlaceAlias", "Указанное имя уже используется");
                            return(await ErrorResult(mission));
                        }

                        result = await _commonPlacesService.AddAlias(new CommonPlaceAlias(mission.CommonPlaceAlias));

                        if (result.Status != OperationResultStatus.Success)
                        {
                            ViewBag.PersonQualities = await _personQualityService.GetPersonQualities();

                            ModelState.AddModelError(string.Empty, result.Description);
                            return(await ErrorResult(mission));
                        }
                    }
                    else
                    {
                        if (!string.Equals(mission.CommonPlaceAlias, mission.InitialCommonPlaceAlias))
                        {
                            var aliasExist = await _commonPlacesService.CheckAliasExist(mission.CommonPlaceAlias);

                            if (aliasExist)
                            {
                                ViewBag.PersonQualities = await _personQualityService.GetPersonQualities();

                                ModelState.AddModelError("CommonPlaceAlias", "Указанное имя уже используется");
                                return(await ErrorResult(mission));
                            }

                            if (string.IsNullOrEmpty(mission.InitialCommonPlaceAlias))
                            {
                                result =
                                    await _commonPlacesService.AddAlias(new CommonPlaceAlias(mission.CommonPlaceAlias));

                                if (result.Status != OperationResultStatus.Success)
                                {
                                    ViewBag.PersonQualities = await _personQualityService.GetPersonQualities();

                                    ModelState.AddModelError(string.Empty, result.Description);
                                    return(await ErrorResult(mission));
                                }
                            }
                            else
                            {
                                var oldAlias = new CommonPlaceAlias(mission.InitialCommonPlaceAlias)
                                {
                                    FullName =
                                        mission
                                        .CommonPlaceAlias
                                };
                                result = await _commonPlacesService.UpdateAliaseName(oldAlias);

                                if (result.Status != OperationResultStatus.Success)
                                {
                                    ViewBag.PersonQualities = await _personQualityService.GetPersonQualities();

                                    ModelState.AddModelError(string.Empty, result.Description);
                                    return(await ErrorResult(mission));
                                }
                            }
                        }
                    }
                }

                result = createOperation
                             ? await _missionService.AddNewMission(mission.ConvertToDomain())
                             : await _missionService.UpdateMission(mission.ConvertToDomain());

                if (result.Status != OperationResultStatus.Success)
                {
                    ModelState.AddModelError(string.Empty, result.Description);
                    return(await ErrorResult(mission));
                }

                return(RedirectToAction("Index"));
            }


            return(await ErrorResult(mission));
        }
Пример #8
0
 public async Task <ActionResult> Edit(MissionUi mission)
 {
     return(await AddUpdateMission(mission, false));
 }
Пример #9
0
 public async Task <ActionResult> Create(MissionUi mission)
 {
     return(await AddUpdateMission(mission, true));
 }