public ActionResult Edit([Bind(Include = "Email,FirstName,LastName,DateOfBirth,Password,UserType,Country,City,Address,ApartmentDescription,ApartmentPrice,UserId")] User user) { bool flag = false; foreach (User item in db.Users) { if (item.UserId != user.UserId && item.Email.Equals(user.Email)) { flag = true; ViewBag.EmailError = "Email is taken"; } } if (!flag) { User sameUser = db.Users.Find(user.UserId); //is used because otherwise elements that cant be changed will be null in db user.Country = sameUser.Country; user.City = sameUser.City; user.Address = sameUser.Address; user.Balance = sameUser.Balance; user.UserPicture = sameUser.UserPicture; user.ApartmentPicture = sameUser.ApartmentPicture; db.Entry(db.Users.Where(x => x.UserId == user.UserId).AsQueryable().FirstOrDefault()).CurrentValues.SetValues(user); db.SaveChanges(); if (IsUserAdmin() && user.UserType == 0) //if user edited themselves from admin to regular { Login(user.Email, user.Password); } return(RedirectToAction("../HomePage")); //returns to index if edited successfully } return(View(user)); }
public ActionResult Edit([Bind(Include = "CycleId,Start,End")] Cycle cycle) { if (ModelState.IsValid) { db.Entry(cycle).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(cycle)); }
public ActionResult Edit([Bind(Include = "RequestId,UserId,From,To,Start,End,State")] Request request) { if (ModelState.IsValid) { db.Entry(request).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.UserId = new SelectList(db.Users, "UserId", "Email", request.UserId); return(View(request)); }
//deletes a request //delete every cycle that contains the user //request's user -> go through all usercycles, save all cycles to a list. //go through cycle list -> delete all user cycles inside, and then delete the cycle //change request state according to bool parameter public void DeleteRequest(Request request, bool didSucceed) { List <Request> reqList = new List <Request>(); //actual requests from db //get all requests from db that have the same userId and 'ongoing' state reqList = (from dbReq in db.Requests where dbReq.UserId == request.UserId && dbReq.State == 0 select dbReq).ToList(); //delete corresponding vertexes from graphs foreach (Request r in reqList) { GetGraph(Get_DateRange_String(r)).DeleteVertex(r.UserId.ToString(), r.From, r.To); } List <Cycle> cycles = new List <Cycle>(); int userId = request.UserId; foreach (UserCycle uc in db.UserCycles.Include("Cycle")) { if (uc.UserId == userId) { cycles.Add(uc.Cycle); } } foreach (Cycle cycle in cycles) { foreach (UserCycle uc in cycle.UserCycles.ToList()) { db.UserCycles.Remove(uc); } db.Cycles.Remove(cycle); } foreach (Request r in reqList) { if (didSucceed && r.RequestId == request.RequestId) { r.State = 1; } else { r.State = 2; } db.Entry(r).Property("State").IsModified = true; } db.SaveChanges(); }