public IActionResult Create(int id) { var claim = new FoundItemClaimViewModel { FoundItemId = id }; //ViewBag.StateList = await claimRepository.GetAllStates(); return(View(claim)); }
public async Task <IActionResult> Create(FoundItemClaimViewModel model) { var user = await userManager.GetUserAsync(HttpContext.User); var foundItem = await foundItemRepository.GetFoundItemById(model.FoundItemId); if (user == null || user == foundItem.FoundItemUser) { ModelState.AddModelError("", "You Cant Claim an Item you Logged"); return(View()); } if (ModelState.IsValid) { foreach (var clam in foundItem.FoundItemClaims) { if (user == clam.ApplicationUser) { ModelState.AddModelError("", "You Cant claim an Item twice"); return(View()); } } Image image = null; if (model.Image != null) { if (!utility.IsSizeAllowed(model.Image)) { ModelState.AddModelError("Photo", "Your file is too large, maximum allowed size is: 5MB"); return(View(model)); } if (!utility.IsImageExtensionAllowed(model.Image)) { ModelState.AddModelError("Photo", "Please only file of type:.jpg, .jpeg, .gif, .png, .bmp are allowed"); return(View(model)); } var photoPath = utility.SaveImageToFolder(model.Image); image = new Image { ImagePath = photoPath }; } user.PhoneNumber = user.PhoneNumber ?? model.PhoneNumber; var claim = new FoundItemClaim { ApplicationUser = user, FoundItemId = model.FoundItemId, Description = model.Description, DateLost = model.DateLost, WhereItemWasLost = model.WhereItemWasLost, Image = image, }; claimRepository.Create(claim); claimRepository.Save(); var ConfirmEmail = Url.Action("Claims", "FoundItem", new { area = User, id = foundItem.Id }, Request.Scheme); var message = new Dictionary <string, string> { { "UName", $"{foundItem.FoundItemUser.FirstName}" }, { "FName", $"{user.FirstName}" }, { "ClaimLink", $"{ConfirmEmail}" } }; await emailNotifier.SendEmailAsync(foundItem.FoundItemUser.Email, "New Claim", message, "foundItemClaim"); return(RedirectToAction(nameof(Index))); } return(View(model)); }