public ActionResult Create(int?id) { var userId = User.Identity.GetUserId(); var list = _context.ShoppingLists.SingleOrDefault(s => s.Id == id); if (list == null) { Response.StatusCode = 404; ViewBag.Message = "Ostoslistaa ei löytynyt"; return(View("Error")); } var editAllowed = _context.ShoppingListShares.Any(s => s.ShoppingListId == list.Id && s.ReceiverUserId == userId && s.EditAllowed); if (list.OwnerId != userId && !editAllowed) { Response.StatusCode = 403; ViewBag.Message = "Ei oikeutta tarkastella ostoslistaa"; return(View("Error")); } var vm = new ShareListViewModel { ShoppingListId = list.Id, Name = list.Name }; return(View(vm)); }
public ActionResult Create(ShareListViewModel vm) { if (ModelState.IsValid) { var receiver = _context.Users.SingleOrDefault(u => u.UserName == vm.ReceiverUsername); if (receiver == null) { ModelState.AddModelError("ReceiverUsername", "Käyttäjää ei löydy kyseisellä nimellä. Tarkista käyttäjänimi."); return(View(vm)); } var shareExists = _context.ShoppingListShares .Any(s => s.ShoppingListId == vm.ShoppingListId && s.ReceiverUserId == receiver.Id); if (shareExists) { ModelState.AddModelError("", "Lista on jo jaettu kyseiselle käyttäjälle"); return(View(vm)); } var share = new ShoppingListShare { ShoppingListId = vm.ShoppingListId, ReceiverUserId = receiver.Id, EditAllowed = vm.EditAllowed }; _context.ShoppingListShares.Add(share); _context.SaveChanges(); TempData["message"] = "Lista '" + vm.Name + "' jaettu käyttäjälle " + vm.ReceiverUsername; return(RedirectToAction("Index", "ShoppingLists")); } return(View(vm)); }