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); } }
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)); }
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)); } }