Пример #1
0
        public async Task <IActionResult> ModifyTask(ChallengesDetailViewModel viewModel)
        {
            foreach (string key in ModelState.Keys.Where(m => m.StartsWith("Challenge.")).ToList())
            {
                ModelState.Remove(key);
            }

            if (ModelState.IsValid)
            {
                if (viewModel.Task.ChallengeTaskType == ChallengeTaskType.Action)
                {
                    viewModel.Task.Author = null;
                    viewModel.Task.Isbn   = null;
                    viewModel.Task.Url    = null;
                }
                await _challengeService.EditTaskAsync(viewModel.Task);
            }
            else
            {
                TempData[EditTask] = viewModel.Task.Id;
            }
            TempData[TempEditChallenge] = Newtonsoft.Json.JsonConvert
                                          .SerializeObject(viewModel.Challenge);

            return(RedirectToAction("Edit", new { id = viewModel.Challenge.Id }));
        }
Пример #2
0
        public async Task <IActionResult> ModifyTask(ChallengesDetailViewModel viewModel)
        {
            if (!string.IsNullOrWhiteSpace(viewModel.Task.Url))
            {
                try
                {
                    viewModel.Task.Url = new UriBuilder(
                        viewModel.Task.Url).Uri.AbsoluteUri;
                }
                catch (Exception)
                {
                    ShowAlertDanger("Invalid URL");
                    return(RedirectToAction("Edit", new { id = viewModel.Challenge.Id }));
                }
            }

            foreach (string key in ModelState
                     .Keys
                     .Where(m => m.StartsWith("Challenge.", StringComparison.OrdinalIgnoreCase))
                     .ToList())
            {
                ModelState.Remove(key);
            }

            if (viewModel.TaskUploadFile != null &&
                !ValidUploadExtensions.Contains(Path
                                                .GetExtension(viewModel.TaskUploadFile.FileName)
                                                .ToLowerInvariant()))
            {
                ModelState.AddModelError("BadgeUploadImage", $"File upload must be one of the following types: {string.Join(", ", ValidUploadExtensions)}");
            }

            if (ModelState.IsValid)
            {
                byte[] fileBytes = null;
                if (viewModel.Task.ChallengeTaskType == ChallengeTaskType.Action)
                {
                    viewModel.Task.Author = null;
                    viewModel.Task.Isbn   = null;
                }
                if (viewModel.TaskUploadFile != null)
                {
                    viewModel.Task.Filename = viewModel.TaskUploadFile.FileName;
                    using (var fileStream = viewModel.TaskUploadFile.OpenReadStream())
                    {
                        using (var ms = new MemoryStream())
                        {
                            fileStream.CopyTo(ms);
                            fileBytes = ms.ToArray();
                        }
                    }
                }
                await _challengeService.EditTaskAsync(viewModel.Task, fileBytes);
            }
            else
            {
                TempData[EditTask] = viewModel.Task.Id;
            }
            TempData[TempEditChallenge] = Newtonsoft.Json.JsonConvert
                                          .SerializeObject(viewModel.Challenge);

            return(RedirectToAction("Edit", new { id = viewModel.Challenge.Id }));
        }