コード例 #1
0
        public ActionResult GetFairData(AjaxFairViewModel model)
        {
            Fair fair = null;

            using (var db = new ApplicationDbContext())
            {
                fair = (
                    from fairdb in db.Fairs
                    where fairdb.Id.ToString() == model.Id
                    select fairdb
                    ).FirstOrDefault();
            }

            if (fair == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.NotFound));
            }
            else
            {
                return(Json(new AjaxFairViewModel
                {
                    Id = fair.Id.ToString(),
                    StartDate = fair.StartDate,
                    EndDate = fair.EndDate,
                    PickingStartDate = fair.PickingStartDate,
                    PickingEndDate = fair.PickingEndDate,
                    SaleStartDate = fair.SaleStartDate,
                    SaleEndDate = fair.SaleEndDate,
                    RetrievalStartDate = fair.RetrievalStartDate,
                    RetrievalEndDate = fair.RetrievalEndDate,
                    Trimester = fair.Trimester
                }, contentType: "application/json"));
            }
        }
コード例 #2
0
        public async Task <IActionResult> Edit(Fair fair)
        {
            if (ModelState.IsValid)
            {
                _Db.Update(fair);
                await _Db.SaveChangesAsync();

                TempData["save"] = "Update successfully";
                return(RedirectToAction(nameof(Index)));
            }

            return(View());
        }
コード例 #3
0
        public async Task <IActionResult> Create(Fair fair)
        {
            if (ModelState.IsValid)
            {
                _Db.Add(fair);
                await _Db.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));

                ;
            }

            return(View());
        }
コード例 #4
0
        public ActionResult Fair(AjaxFairViewModel model)
        {
            // TODO: Transfert database specifics to a repository.
            using (var db = new ApplicationDbContext())
            {
                Fair fair;
                if (model.Id == null)
                {
                    fair = new Fair();
                }
                else
                {
                    fair = db.Fairs.FirstOrDefault(fairDb => fairDb.Id.ToString() == model.Id);

                    if (fair == null)
                    {
                        return(new HttpStatusCodeResult(HttpStatusCode.NotFound));
                    }
                }

                fair.SetDates(model.StartDate, model.EndDate)
                .SetDates(model.PickingStartDate, model.PickingEndDate, forPhase: FairPhase.PICKING)
                .SetDates(model.SaleStartDate, model.SaleEndDate, forPhase: FairPhase.SALE)
                .SetDates(model.RetrievalStartDate, model.RetrievalEndDate, forPhase: FairPhase.RETRIEVAL);
                fair.Trimester = model.Trimester;

                if (model.Id == null)
                {
                    db.Fairs.Add(fair);
                }

                // Updating all past offers until the fair start date before this fair
                var pastFair = (
                    from dbFair in db.Fairs
                    where dbFair.StartDate < fair.StartDate
                    orderby dbFair.StartDate descending
                    select dbFair
                    ).FirstOrDefault();

                var pastFairStartDate = pastFair?.StartDate ?? new DateTime(1970, 01, 01);
                var pastOffers        = (
                    from dbOffer in db.Offers
                    where dbOffer.StartDate < fair.StartDate && dbOffer.StartDate >= pastFairStartDate && dbOffer.ManagedByFair
                    select dbOffer
                    );

                // Removing the old offers managed by the fair.
                foreach (var offer in fair.Offers)
                {
                    fair.Offers.Remove(offer);
                }

                // Adding the new ones (including the old ones that are still valid for this fair).
                foreach (var offer in pastOffers)
                {
                    fair.Offers.Add(offer);
                }

                db.SaveChanges();
            }

            return(Json(new { }, contentType: "application/json"));
        }
コード例 #5
0
        public ActionResult Pick(FairViewModel model)
        {
            if (Session[CURRENT_STEP] == null)
            {
                return(RedirectToAction(nameof(Pick)));
            }

            int  currentStep = (int)Session[CURRENT_STEP];
            Fair currentFair = Repository.GetCurrentFair();

            model.Fair           = currentFair;
            model.NumberOfPhases = NUMBER_OF_STEPS;

            if (string.IsNullOrEmpty(model.UserBarCode) && currentStep == 0)
            {
                ModelState.AddModelError(nameof(FairViewModel.UserBarCode), "Veuillez indiquez le code à barres du vendeur.");
            }

            if (ModelState.IsValid)
            {
                switch (currentStep)
                {
                case 0:
                    ApplicationUser seller = Repository.GetUserBy(BarCode: model.UserBarCode.Trim().ToUpper());

                    if (seller == null)
                    {
                        return(RedirectToAction(nameof(Pick)));
                    }

                    Session[CURRENT_STEP] = 1;
                    Session[SELLER]       = seller.Id;
                    model.CurrentStep     = 1;
                    model.User            = seller;
                    model.UserOffers      = seller.Offers;
                    model.FairOffers      = currentFair.Offers;
                    break;

                case 1:
                    if (Session[SELLER] == null)
                    {
                        return(RedirectToAction(nameof(Pick)));
                    }
                    ApplicationUser seller1 = Repository.GetUserBy(Id: Session[SELLER] as string);
                    Session[SELLER_PICKED_ARTICLES] =
                        currentFair.Offers.Intersect(seller1.Offers)
                        .Where(offer => offer.Article.FairState == ArticleFairState.PICKED)
                        .ToList()
                        .ConvertAll(new Converter <Offer, string>(offer => offer.Id.ToString()));

                    Session[CURRENT_STEP] = 2;
                    model.CurrentStep     = 2;
                    model.User            = seller1;
                    break;

                case 2:
                    return(RedirectToAction(nameof(Pick)));
                }
            }

            return(View(model));
        }