예제 #1
0
        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());
        }
예제 #2
0
        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());
        }