public ActionResult EditRoute(int id = 0) { //Load the route //then pass to the view UnitOfWork myUnitOfWork = new UnitOfWork(new VoucherWorldContext()); var route = myUnitOfWork.Repository <Route>() .Query(r => r.Id == id) .Include(r => r.Gift) .Include(r => r.Enrollments) .Include(r => r.OpenEndedQuestion) .Include(r => r.Merchant) .Select() .First(); route.RoutePlaces = myUnitOfWork.Repository <RoutePlace>() .Query(rp => rp.RouteId == route.Id) .Include(rp => rp.Place) .Select() .ToList(); var routeModel = new MvcRouteModel(route); var placeList = myUnitOfWork.Repository <Place>() .Query(p => p.MerchantId == route.MerchantId) .Select() .ToList(); routeModel.Places = placeList; return(View(routeModel)); }
public ActionResult EditRoute(MvcRouteModel routeModel) { UnitOfWork myUnitOfWork = new UnitOfWork(new VoucherWorldContext()); if (ModelState.IsValid) { var route = myUnitOfWork.Repository <Route>() .Query(r => r.Id == routeModel.Id) .Include(r => r.Gift) .Include(r => r.Enrollments) .Include(r => r.OpenEndedQuestion) .Include(r => r.Merchant) .Select() .First(); route.Name = routeModel.Name; route.IsHidden = route.IsHidden; route.Category = routeModel.Category; route.PlaceIcon = routeModel.PlaceIcon; route.ObjectState = ObjectState.Modified; myUnitOfWork.Repository <Route>().Update(route); myUnitOfWork.SaveChanges(); var gift = myUnitOfWork.Repository <Gift>().Find(routeModel.Gift.Id); gift.GiftName = routeModel.Gift.GiftName; gift.StockAmount = routeModel.Gift.StockAmount; gift.ObjectState = ObjectState.Modified; myUnitOfWork.Repository <Gift>().Update(gift); myUnitOfWork.SaveChanges(); var question = myUnitOfWork.Repository <OpenEndedQuestion>().Find(routeModel.OpenEndedQuestion.Id); question.Content = routeModel.OpenEndedQuestion.Content; myUnitOfWork.Repository <OpenEndedQuestion>().Update(question); myUnitOfWork.SaveChanges(); bool isPlaceChanged = false; var originalPlaceIds = routeModel.RoutePlaces.Select(rp => rp.PlaceId).ToList(); for (int i = 0; i < routeModel.PlaceIds.Count; i++) { if (routeModel.PlaceIds[0] != originalPlaceIds[i]) { isPlaceChanged = true; break; } } if (isPlaceChanged) { foreach (var routePlace in route.RoutePlaces) { routePlace.ObjectState = ObjectState.Deleted; myUnitOfWork.Repository <RoutePlace>().Delete(routePlace); } myUnitOfWork.SaveChanges(); foreach (var placeId in routeModel.PlaceIds) { var place = myUnitOfWork.Repository <Place>().Find(placeId); var routePlace = new RoutePlace() { Place = place, Route = route, ObjectState = ObjectState.Added }; myUnitOfWork.Repository <RoutePlace>().InsertGraph(routePlace); } myUnitOfWork.SaveChanges(); } return(RedirectToAction("RouteList")); } return(View()); }