public async Task <ServiceResponse <GetMarketSellerDTO> > AddMarketToSeller(AddMarketSellerDTO newMarketSeller) { ServiceResponse <GetMarketSellerDTO> serviceResponse = new ServiceResponse <GetMarketSellerDTO>(); try { if (!await _context.MarketSellers.AnyAsync(x => x.MarketId == newMarketSeller.MarketId && x.SellerId == newMarketSeller.SellerId)) { var seller = await _context.Sellers.FindAsync(newMarketSeller.SellerId); var market = await _context.Markets.FindAsync(newMarketSeller.MarketId); if (seller == null) { serviceResponse.Success = false; serviceResponse.Message = $"Could not found seller with id '{newMarketSeller.SellerId}'"; } else if (market == null) { serviceResponse.Success = false; serviceResponse.Message = $"Could not found market with id '{newMarketSeller.MarketId}'"; } else { MarketSeller marketSeller = _mapper.Map <MarketSeller>(newMarketSeller); await _context.MarketSellers.AddAsync(marketSeller); await _context.SaveChangesAsync(); // reload data from database because market and seller objects are not included otherwise var dbMarketSeller = await _context.MarketSellers.Include(x => x.Market).Include(x => x.Seller).SingleAsync(x => x.Id == marketSeller.Id); serviceResponse.Data = _mapper.Map <GetMarketSellerDTO>(dbMarketSeller); } } else { serviceResponse.Success = false; serviceResponse.Message = $"Market with id '{newMarketSeller.MarketId} already exists for seller with id '{newMarketSeller.SellerId}'"; } } catch (Exception ex) { serviceResponse.Success = false; serviceResponse.Exception = ex.Message; } return(serviceResponse); }
public async Task <IActionResult> AddMarket(long id, [FromBody] AddMarketSellerDTO addedMarketSeller) { // check if requester is trying to add a market to another seller if (id != addedMarketSeller.SellerId) { return(Forbid()); } // check if requester is part of the seller if (!await _permissionService.UserIsSeller(HttpContext.GetUserIdFromToken(), id)) { return(Forbid()); } return(Ok(await _sellerService.AddMarketToSeller(addedMarketSeller))); }