public async Task <int> CreateAsync( string name, int categoryId, int cityId, string address, string description, string userId, int priceByNight, int bedroomsNum, int bathroomsNum, int bedsNum, int maxGuest, bool pets, bool smoking, List <ExtraViewModel> extras, List <IFormFile> images) { var place = new Place { Name = name, CategoryId = categoryId, CityId = cityId, Address = address, Description = description, UserId = userId, PriceByNight = priceByNight, BedroomsNum = bedroomsNum, BathroomsNum = bathroomsNum, BedsNum = bedsNum, MaxGuest = maxGuest, Pets = pets, Smoking = smoking, }; List <PlaceExtra> placesExtras = new List <PlaceExtra>(); foreach (var extra in extras) { if (extra.IsSelected) { PlaceExtra newPlaceExtra = new PlaceExtra { ExtraId = extra.Id, Place = place }; placesExtras.Add(newPlaceExtra); } } place.PlaceExtras = placesExtras; List <Image> placeImages = await this.imagesService.UploadImages(images); place.Images = placeImages; await this.placesRepository.AddAsync(place); await this.placesRepository.SaveChangesAsync(); return(place.Id); }
public async Task <int> UpdateAsync( int placeId, string name, string description, int bedroomsNum, int bathroomsNum, int priceByNight, int bedsNum, int maxGuest, bool pets, bool smoking, List <ExtraViewModel> extras) { Place place = this.GetById <Place>(placeId); place.Name = name; place.Description = description; place.BedroomsNum = bedroomsNum; place.BathroomsNum = bathroomsNum; place.PriceByNight = priceByNight; place.BedsNum = bedsNum; place.MaxGuest = maxGuest; place.Smoking = smoking; place.Pets = pets; List <PlaceExtra> placesExtras = new List <PlaceExtra>(); foreach (var extra in extras) { if (extra.IsSelected) { PlaceExtra newPlaceExtra = new PlaceExtra { ExtraId = extra.Id, Place = place }; placesExtras.Add(newPlaceExtra); } } place.PlaceExtras.ToList().ForEach(placeExtra => this.placeExtrasRepository.Delete(placeExtra)); place.PlaceExtras.ToList().ForEach(placeExtra => place.PlaceExtras.Remove(placeExtra)); await this.placeExtrasRepository.SaveChangesAsync(); place.PlaceExtras = placesExtras; this.placesRepository.Update(place); await this.placesRepository.SaveChangesAsync(); return(place.Id); }