Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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());
        }