예제 #1
0
        public async Task <Result <NewsDTO> > AddNews(string title, string imageurl, string imageName, string body, int airportId, ClaimsPrincipal claims)
        {
            try
            {
                var user = await userManager.GetUserAsync(claims);

                if (user is null)
                {
                    return(new NotFoundResult <NewsDTO>("User not found"));
                }

                var userRoles = await userManager.GetRolesAsync(user);

                if (userRoles is null || !userRoles.Contains(Roles.AirportsAdministrator.ToString()))
                {
                    return(new InvalidResult <NewsDTO>($"User is not in role: {Roles.AirportsAdministrator}"));
                }

                var airport = await airportRepository.GetAirportByIdAsync(airportId);

                if (airport is null)
                {
                    return(new NotFoundResult <NewsDTO>("Airport not found"));
                }

                var userAirport = await airportRepository.GetUserAirportByIdAsync(user.Id, airport.Id);

                if (userAirport is null)
                {
                    return(new InvalidResult <NewsDTO>("User not assigned to this airport"));
                }

                var addedNews = await newsRepository.AddNewsAsync(new News()
                {
                    Title     = title,
                    Imageurl  = imageurl,
                    ImageName = imageName,
                    Body      = body,
                    AirportId = airportId,
                    Airport   = airport
                });

                if (addedNews is null)
                {
                    return(new InvalidResult <NewsDTO>("News was not created"));
                }

                var result = mapper.Map <News, NewsDTO>(addedNews);

                return(new SuccessResult <NewsDTO>(result));
            }
            catch (Exception ex)
            {
                return(new UnexpectedResult <NewsDTO>(ex.Message));
            }
        }
예제 #2
0
        /// <summary>
        /// Method that maps news from dto and sends News object to repo. Then it maps it for return.
        /// </summary>
        /// <param name="newsCreateDto">NewsCreateDto object</param>
        /// <returns>NewsReadDto object</returns>
        public async Task <NewsReadDto> AddNewsAsync(NewsCreateEditDto newsCreateDto)
        {
            var news = _mapper.Map <Core.Models.Domain.News>(newsCreateDto);

            news = await _newsRepository.AddNewsAsync(news);

            var result = _mapper.Map <NewsReadDto>(news);

            return(result);
        }
예제 #3
0
 public async Task AddNewsAsync(NewsModel newsModel)
 {
     await _newsRepository.AddNewsAsync(newsModel);
 }