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