Ejemplo n.º 1
0
        public async Task <IActionResult> Create(ControllerModels.Smileys.CreateSmileyInput input)
        {
            if (ModelState.IsValid)
            {
                var allowedExtensions = new[] { "gif", "png" };
                var extension         = Path.GetExtension(input.File.FileName).ToLower().Substring(1);

                if (Regex.IsMatch(input.File.FileName, @"[^a-zA-Z 0-9_\-\.]"))
                {
                    ModelState.AddModelError("File", "Your filename contains invalid characters.");
                }

                if (!allowedExtensions.Contains(extension))
                {
                    ModelState.AddModelError("File", $"Your file must be: {string.Join(", ", allowedExtensions)}.");
                }

                if (!(await SmileyRepository.FindByCode(input.Code) is null))
                {
                    ModelState.AddModelError(nameof(input.Code), "Another smiley exists with that code.");
                }

                if (ModelState.IsValid)
                {
                    var smileyRecord = new DataModels.Smiley {
                        Code     = input.Code,
                        Thought  = input.Thought,
                        FileName = input.File.FileName
                    };

                    DbContext.Smileys.Add(smileyRecord);

                    using (var inputStream = input.File.OpenReadStream()) {
                        smileyRecord.Path = await ImageStore.Save(new ImageStoreSaveOptions {
                            ContainerName = Constants.InternalKeys.SmileyImageContainer,
                            FileName      = input.File.FileName,
                            ContentType   = input.File.ContentType,
                            InputStream   = inputStream,
                            Overwrite     = true
                        });
                    }

                    await DbContext.SaveChangesAsync();

                    TempData[Constants.InternalKeys.StatusMessage] = $"Smiley '{input.File.FileName}' was added with code '{input.Code}'.";

                    var referrer = this.GetReferrer();
                    return(Redirect(referrer));
                }
            }

            var viewModel = new ViewModels.CreatePage {
                Code    = input.Code,
                Thought = input.Thought
            };

            return(View(viewModel));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Create(CreateSmileyInput input)
        {
            if (ModelState.IsValid)
            {
                var serviceResponse = await SmileyRepository.Create(input);

                return(await ForumViewResult.RedirectFromService(this, serviceResponse, FailureCallback));
            }

            return(await FailureCallback());

            async Task <IActionResult> FailureCallback()
            {
                var viewModel = new ViewModels.CreatePage {
                    Code    = input.Code,
                    Thought = input.Thought
                };

                return(await ForumViewResult.ViewResult(this, viewModel));
            }
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> Create(ControllerModels.Smileys.CreateSmileyInput input)
        {
            if (ModelState.IsValid)
            {
                var result = await SmileyRepository.Create(input);

                ModelState.AddModelErrors(result.Errors);

                if (ModelState.IsValid)
                {
                    TempData[Constants.InternalKeys.StatusMessage] = $"Smiley '{input.File.FileName}' was added with code '{input.Code}'.";

                    var referrer = ForumViewResult.GetReferrer(this);
                    return(Redirect(referrer));
                }
            }

            var viewModel = new ViewModels.CreatePage {
                Code    = input.Code,
                Thought = input.Thought
            };

            return(await ForumViewResult.ViewResult(this, viewModel));
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> Create()
        {
            var viewModel = new ViewModels.CreatePage();

            return(await ForumViewResult.ViewResult(this, viewModel));
        }
Ejemplo n.º 5
0
        public IActionResult Create()
        {
            var viewModel = new ViewModels.CreatePage();

            return(View(viewModel));
        }
Ejemplo n.º 6
0
        public IActionResult Create()
        {
            var viewModel = new ViewModels.CreatePage();

            return(ForumViewResult.ViewResult(this, viewModel));
        }