public async Task <ActionResult> AddMediaToPerson(Guid id, [FromBody] MediaCreationDto media) { var person = await _ctx.Persons.Where(p => p.Id == id).Include(d => d.Details).SingleOrDefaultAsync(); var mediaToAdd = await _ctx.Media.FindAsync(media.MediaId); if (person == null || mediaToAdd == null) { return(NotFound()); } if (!ModelState.IsValid) { return(BadRequest()); } mediaToAdd.Details = person.Details; _ctx.Media.Update(mediaToAdd); await _ctx.SaveChangesAsync(); return(Ok()); }
public ActionResult <Media> CreateMedia([FromBody] MediaCreationDto mediaCreationDto, [FromHeader] Guid accountId, [FromHeader] string key) { try { //pristup metodi imaju samo autorizovani korisnici if (!auth.AuthorizeUser(key)) { return(StatusCode(StatusCodes.Status401Unauthorized, "Authorization failed!")); } Media media = mapper.Map <Media>(mediaCreationDto); //poziv drugog servisa var itemForSale = itemForSaleService.GetItemForSaleById <ItemForSaleDto>(HttpMethod.Get, media.ItemForSaleId).Result; if (itemForSale == null) { throw new DbException("Item with that ID doesn't exist!"); } //samo onaj ko je postavio proizvod moze da mu dodaje multimedijalni sadrzaj if (mediaCreationDto.AccountId != accountId) { return(StatusCode(StatusCodes.Status403Forbidden, "Not allowed!")); } mediaRepository.CreateMedia(media); mediaRepository.SaveChanges(); logger.Log(LogLevel.Information, contextAccessor.HttpContext.TraceIdentifier, "", "Create new media", null); string location = linkGenerator.GetPathByAction("GetMediaById", "Media", new { mediaId = media.MediaId }); return(Created(location, media)); } catch (Exception ex) { logger.Log(LogLevel.Error, contextAccessor.HttpContext.TraceIdentifier, "", "Error while creating media", null); return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message)); } }