public async Task <ActionResult> Create(AddClassTypeViewModel classType) { if (ModelState.IsValid) { // Verify that the user selected a file if (classType.ImageFile != null && classType.ImageFile.ContentLength > 0) { if (classType.ImageFile.ContentLength > 20000000) { ModelState.AddModelError("", "Please ensure image file is less than 2MB"); return(RedirectToAction("Create")); } // extract only the filename var fileName = Path.GetFileName(classType.ImageFile.FileName); if (!fileName.Contains(".jpg") && !fileName.Contains(".png")) { ModelState.AddModelError("", "Please ensure file is in JPG or PNG format"); return(RedirectToAction("Create")); } if (fileName.Contains(" ")) { ModelState.AddModelError("", "Image filename cannot contain spaces or special characters"); return(RedirectToAction("Create")); } var filePath = ConfigurationManager.AppSettings["ClassTypeAssetPath"]; // store the file inside ~/App_Data/classtype folder var path = Path.Combine(Server.MapPath(filePath), fileName); classType.ImageFile.SaveAs(path); classType.ImageFileName = fileName; } // have not populated view yet - need to do that and then test var isSuccess = await _classTypeService.AddClassType(classType); if (isSuccess) { return(RedirectToAction("Index")); } } return(View(classType)); }
public async Task <bool> AddClassType(AddClassTypeViewModel viewModel) { var dto = new ClassTypeDto() { Id = Guid.NewGuid().ToString(), Name = viewModel.Name, ClassColour = viewModel.ClassColour, Difficulty = viewModel.Difficulty, Description = viewModel.Description, ImageFileName = viewModel.ImageFileName }; var result = _classTypeWriter.AddClassType(dto); return(await Task.FromResult(result)); }