public async Task <IActionResult> AddRoute(string userId, RouteDto model) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var dbModel = new Route { Description = model.Description, Name = model.Name, IsPublic = model.IsPublic, UserId = userId, RoutePlaces = new List <RoutePlace>() }; for (int i = 0; i < model.Places.Count; i++) { var dbRoutePolace = new RoutePlace { Order = i, Longitude = model.Places[i].Lng, Latitude = model.Places[i].Lat, Route = dbModel }; dbModel.RoutePlaces.Add(dbRoutePolace); } await _dbContext.Routes.AddAsync(dbModel); await _dbContext.SaveChangesAsync(); var dbRatingModel = new Rating { UserId = dbModel.UserId, Route = dbModel, IsAddedByThisUser = true }; await _dbContext.Ratings.AddAsync(dbRatingModel); await _dbContext.SaveChangesAsync(); return(Ok()); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public async Task <IActionResult> UpdateRoute(RouteDto model) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var dbModel = await _dbContext.Routes.Include(r => r.RoutePlaces).Where(r => r.Id == model.Id).FirstOrDefaultAsync(); if (dbModel == null) { return(NotFound()); } dbModel.Name = model.Name; dbModel.Description = model.Description; dbModel.IsPublic = model.IsPublic; _dbContext.RoutePlaces.RemoveRange(dbModel.RoutePlaces); for (int i = 0; i < model.Places.Count; i++) { var dbRoutePolace = new RoutePlace { Order = i, Longitude = model.Places[i].Lng, Latitude = model.Places[i].Lat, Route = dbModel }; dbModel.RoutePlaces.Add(dbRoutePolace); } await _dbContext.SaveChangesAsync(); return(Ok()); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public ActionResult CreateRoute(MvcCreateRouteModel routeModel) { UnitOfWork myUnitOfWork = new UnitOfWork(new VoucherWorldContext()); if (ModelState.IsValid) { var user = myUnitOfWork.Repository <MerchantManager>() .Query(u => u.UserName == User.Identity.Name) .Include(u => u.Merchant) .Select() .SingleOrDefault(); var route = new Route(); route.Name = routeModel.Name; route.IsHidden = route.IsHidden; route.Category = routeModel.Category; route.PlaceIcon = routeModel.PlaceIcon; route.Merchant = user.Merchant; route.ObjectState = ObjectState.Added; myUnitOfWork.Repository <Route>().InsertGraph(route); myUnitOfWork.SaveChanges(); var gift = new Gift(); gift.GiftName = routeModel.Gift.GiftName; gift.StockAmount = routeModel.Gift.StockAmount; gift.Route = route; gift.ObjectState = ObjectState.Added; myUnitOfWork.Repository <Gift>().InsertGraph(gift); myUnitOfWork.SaveChanges(); var question = new OpenEndedQuestion(); question.Content = routeModel.OpenEndedQuestion.Content; question.Route = route; question.ObjectState = ObjectState.Added; myUnitOfWork.Repository <OpenEndedQuestion>().InsertGraph(question); 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(); int count = myUnitOfWork.Repository <OpenEndedAnswer>() .Query(a => a.NormalUserId == 8 && a.Content == "strawberry") .Select() .ToList() .Count; if (count == 0) { var auser = myUnitOfWork.Repository <NormalUser>().Find(8); var answer = new OpenEndedAnswer { NormalUser = auser, OpenEndedQuestion = question, Content = "strawberry", ObjectState = ObjectState.Added }; myUnitOfWork.Repository <OpenEndedAnswer>().InsertGraph(answer); myUnitOfWork.SaveChanges(); var enrollment = new Enrollment { NormalUser = auser, Route = route, EnrollStatus = EnrollStatus.OnGoing, GiftCodeStatus = GiftCodeStatus.Available, GiftCode = "y5eaimzjg", ObjectState = ObjectState.Added }; myUnitOfWork.Repository <Enrollment>().InsertGraph(enrollment); myUnitOfWork.SaveChanges(); } return(RedirectToAction("RouteList")); } return(View()); }
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()); }