public async Task <bool> CreateOffer(Offer offer, IEnumerable <IFormFile> offerPhotos) { if (offer == null) { return(false); } var currentUser = await profileService.GetCurrentUser(); if (currentUser == null) { return(false); } currentUser.Offers.Add(offer); offer.SetDetailsId(offer.OfferDetails.Id); offer.OfferDetails.SetOfferId(offer.Id); if (!await database.Complete()) { return(false); } if (offerPhotos != null) { var uploadedPhotos = await filesManager.Upload(offerPhotos, $"offers/{offer.Id}"); uploadedPhotos.ToList().ForEach(photo => offer.OfferPhotos.Add(OfferPhoto.Create <OfferPhoto>(photo.Path).SetOfferId(offer.Id))); } return(await database.Complete()); }
public async Task <bool> UpdateOffer(Offer offer, IEnumerable <IFormFile> offerPhotos) { if (offer == null) { return(false); } var currentUser = await profileService.GetCurrentUser(); if (currentUser == null) { return(false); } if (!offerValidationService.ValidateOfferCreator(currentUser)) { return(false); } var previousOffer = currentUser.Offers.FirstOrDefault(o => o.Id == offer.Id); if (previousOffer == null) { return(false); } if (offerPhotos != null && offerValidationService.ValidateOfferPhotosCount(offerPhotos.Count(), offer)) { var uploadedPhotos = await filesManager.Upload(offerPhotos, $"offers/{offer.Id}"); uploadedPhotos.ToList().ForEach(photo => offer.OfferPhotos.Add(OfferPhoto.Create <OfferPhoto>(photo.Path).SetOfferId(offer.Id))); } database.OfferRepository.Update(offer); return(await database.Complete()); }