Пример #1
0
 private void AddAirportsOffers(OfferViewModel model, Offer offer)
 {
     foreach (var item in model.Airports)
     {
         AirportOffer AirportOffer = new AirportOffer()
         {
             OfferId   = offer.Id,
             AirportId = item,
         };
         db.Add(AirportOffer);
     }
 }
Пример #2
0
        public async Task <IActionResult> Edit(int id, OfferViewModel model)
        {
            if (id != model.Id)
            {
                return(NotFound());
            }

            Offer offer = db.Offer.Find(id);

            if (ModelState.IsValid)
            {
                try
                {
                    offer.StartDate       = model.StartDate;
                    offer.EndDate         = model.EndDate;
                    offer.ItemOrder       = model.ItemOrder;
                    offer.DuesTaxesLevies = model.DuesTaxesLevies;

                    // update parties
                    List <AirportOffer> AirportOffer = db.AirportOffers.Where(w => w.OfferId == id).ToList();
                    db.RemoveRange(AirportOffer);

                    List <AirportOffer> newAirportOffers = new List <AirportOffer>();
                    model.AirportOffers.ForEach(
                        x =>
                    {
                        Airport airport           = db.Airport.Find(x.AirportId);
                        var cityId                = airport.CityId;
                        var countryId             = airport.CountryId;
                        AirportOffer airportOffer = new AirportOffer()
                        {
                            AirportId = airport.Id,
                            CityId    = cityId,
                            Price     = x.Price,
                            PriceUnit = x.PriceUnit,
                            OfferId   = model.Id,
                        };
                        newAirportOffers.Add(airportOffer);
                    }
                        );
                    await db.AddRangeAsync(newAirportOffers);

                    // update fuel types
                    List <OfferFuelType> offerFuelTypes = db.OfferFuelType
                                                          .Where(w => w.OfferId == id).ToList();
                    db.RemoveRange(offerFuelTypes);

                    List <OfferFuelType> newofferFuelType = new List <OfferFuelType>();
                    model.FuelTypes.ForEach(
                        x => newofferFuelType.Add(new OfferFuelType()
                    {
                        OfferId = model.Id, FuelTypeId = x
                    }
                                                  ));
                    await db.AddRangeAsync(newofferFuelType);

                    db.Update(offer);
                    await db.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!OfferExists(model.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                Message = Toast.SucsessToast();

                return(RedirectToAction(nameof(Index)));
            }
            ViewBag.FuelTypes      = db.FuelType.ToList();
            model.SelectedAirports = offer.AirportOffers.Where(z => z.Airport != null).Select(x => x.Airport).ToList();
            List <AirportOfferViewModel> AirportOffers = offer.AirportOffers.Where(q => q.AirportId != null)
                                                         .Select(x => new AirportOfferViewModel()
            {
                AirportId = (int)x.AirportId,
                Airport   = x.Airport,
                OfferId   = offer.Id,
                Price     = x.Price,
                PriceUnit = x.PriceUnit
            }).ToList();

            model.AirportOffers = AirportOffers;
            return(View(model));
        }
Пример #3
0
        public async Task <IActionResult> Create(OfferViewModel model)
        {
            //var Continents = base.db.Continent.ToList();
            //var Countries = db.Country.Where(d => !d.IsDeleted).Where(q => q.ContinentId == Continents.FirstOrDefault().Id).ToList();
            //var Cities = db.City.Where(d => !d.IsDeleted).Where(q => q.CountryId == Countries.FirstOrDefault().Id).ToList();

            //ViewData["ContinentId"] = new SelectList(Continents, "Id", "Name");
            //ViewData["CountryId"] = new SelectList(Countries, "Id", "Name");
            //ViewData["CityId"] = new SelectList(Cities, "Id", "Name");
            ViewData["AirportId"] = new SelectList(base.db.Airport.Take(20), "Id", "Name");

            ViewBag.FuelTypes = db.FuelType.ToList();
            try
            {
                if (ModelState.IsValid)
                {
                    if (model.AirportOffers.Count == 0)
                    {
                        ModelState.AddModelError("", "Select at least one airport.");
                        throw new Exception();
                    }

                    //checkDublication(model);
                    var userId = (await GetCurrentUserAsync()).Id;

                    //string userId = User.Identity.GetUserId();
                    FuelSupplier fuelSupplier = db.FuelSupplier.Where(d => !d.IsDeleted).Where(e => e.UserId == userId).FirstOrDefault();
                    if (fuelSupplier == null)
                    {
                        return(NotFound());
                    }
                    int supplierId = fuelSupplier.Id;

                    Offer offer = new Offer()
                    {
                        FuelSupplierId  = supplierId,
                        StartDate       = model.StartDate,
                        EndDate         = model.EndDate,
                        Status          = OfferStatus.Active.ToString(),
                        DuesTaxesLevies = model.DuesTaxesLevies,
                        ItemOrder       = model.ItemOrder,
                    };
                    await base.db.Offer.AddAsync(offer);

                    List <OfferFuelType> offerFuelType = new List <OfferFuelType>();
                    model.FuelTypes.ForEach(
                        x => offerFuelType.Add(new OfferFuelType()
                    {
                        OfferId = offer.Id, FuelTypeId = x
                    }
                                               ));
                    await db.AddRangeAsync(offerFuelType);

                    List <AirportOffer> AirportOffers = new List <AirportOffer>();
                    model.AirportOffers.ForEach(
                        x => {
                        Airport airport           = db.Airport.Find(x.AirportId);
                        var cityId                = airport.CityId;
                        var countryId             = airport.CountryId;
                        AirportOffer airportOffer = new AirportOffer()
                        {
                            AirportId = airport.Id,
                            CityId    = cityId,
                            Price     = x.Price,
                            PriceUnit = x.PriceUnit,
                            OfferId   = offer.Id,
                        };
                        AirportOffers.Add(airportOffer);
                    }
                        );
                    await db.AddRangeAsync(AirportOffers);


                    await base.db.SaveChangesAsync();

                    Message = Toast.SucsessToast();
                    return(RedirectToAction("Details", new { offer.Id }));
                }

                model.AirportOffers.ForEach(x => x.Airport = db.Airport.Find(x.AirportId));
                return(View(model));
            }
            catch (Exception e)
            {
                ViewData["AirportId"] = new SelectList(base.db.Airport.Take(20), "Id", "Name");
                ModelState.AddModelError("", GetExceptionMessage(e));
                Serilog.Log.Error(e.Message);
                model.AirportOffers.ForEach(x => x.Airport = db.Airport.Find(x.AirportId));
                return(View(model));
            }
        }