Ejemplo n.º 1
0
        // Hirdetés módosítása
        public async Task <AdvertisementDetailedDTO> UpdateAdvertisement(string userName, int id, UpdateAdvertisementRequest request)
        {
            var advertisement = await AdvertisementRepository.FindByIdAsync(id);

            // Ha helytelen a felhasználónév
            if (advertisement.UserName != userName)
            {
                return(null);
            }

            advertisement      = request.FromDTO();
            advertisement.Id   = id;
            advertisement.User = await UserRepository.GetByName(userName);

            advertisement.UserName = userName;

            //Képek frissítése
            if (request.ImagesChanged)
            {
                await AdvertisementRepository.RemoveImages(advertisement);

                foreach (string image in request.ImageList)
                {
                    advertisement.Images.Add(new Image {
                        File = image
                    });
                }
            }

            //Validáció
            bool valid = await ValidateAsync(advertisement, request.ImagesChanged);

            //Előfizetés ellenőrzése
            bool success = SubscriptionService.CheckSubscription(advertisement.User, advertisement);

            if (valid && success)
            {
                advertisement.Status = advertisement.Priority.ToStatus();
                var result = await AdvertisementRepository.UpdateAsync(advertisement);

                return(result.ToDetailedDTO());
            }
            return(null);
        }