public IActionResult Put(Guid key, [FromBody] ListingCreateOrUpdate update) { if (!Exists(key)) { return(NotFound()); } return(Ok(_listingService.updateListing(key, update))); }
public ListingDTO createListing(ListingCreateOrUpdate listingDTO) { Listing listing = new Listing() { name = listingDTO.name, description = listingDTO.description, created = DateTime.UtcNow, modified = DateTime.UtcNow, price = listingDTO.price }; User currentUser = _currentUserService.GetCurrentUser(); listing.userId = currentUser.id; Guid key = _ctx.Listings.Add(listing).Entity.id.Value; foreach (string tag in listingDTO.tags) { _ctx.ListingTags.Add(new ListingTag() { name = tag, listingId = key }); } if (null != listingDTO.image && FileHelper.IsImage(listingDTO.image)) { byte[] fileContents = null; using (var fs1 = listingDTO.image.OpenReadStream()) using (var ms1 = new MemoryStream()) { fs1.CopyTo(ms1); fileContents = ms1.ToArray(); } _ctx.ListingImages.Add(new ListingImage() { listingId = key, contentType = listingDTO.image.ContentType, image = fileContents, fileName = Path.GetFileName(listingDTO.image.FileName) }); } _ctx.SaveChanges(); Listing result = _ctx.Listings .Include(l => l.user) .Include(l => l.tags) .Where(l => l.id == key) .FirstOrDefault(); return(_mapper.Map <ListingDTO>(result)); }
public ListingDTO updateListing(Guid key, ListingCreateOrUpdate update) { Listing original = _ctx.Listings.AsNoTracking().FirstOrDefault(p => p.id == key); User currentUser = _currentUserService.GetCurrentUser(); if (null != update.tags) { foreach (ListingTag doomedTag in _ctx.ListingTags.Where(t => t.listingId == key)) { _ctx.ListingTags.Remove(doomedTag); } foreach (string tag in update.tags) { _ctx.ListingTags.Add(new ListingTag() { name = tag, listingId = key }); } } if (null != update.image && FileHelper.IsImage(update.image)) { ListingImage existing = _ctx.ListingImages.FirstOrDefault(li => li.listingId == key); if (null != existing) { _ctx.ListingImages.Remove(existing); } byte[] fileContents = null; using (var fs1 = update.image.OpenReadStream()) using (var ms1 = new MemoryStream()) { fs1.CopyTo(ms1); fileContents = ms1.ToArray(); } _ctx.ListingImages.Add(new ListingImage() { listingId = key, contentType = update.image.ContentType, image = fileContents, fileName = Path.GetFileName(update.image.FileName) }); } original.name = update.name; original.description = update.description; original.modified = DateTime.UtcNow; original.price = update.price; _ctx.Entry(original).State = EntityState.Modified; _ctx.SaveChanges(); Listing result = _ctx.Listings .Include(l => l.user) .Include(l => l.tags) .Where(l => l.id == key) .FirstOrDefault(); return(_mapper.Map <ListingDTO>(result)); }
public IActionResult Post([FromBody] ListingCreateOrUpdate listingDTO) { return(Ok(_listingService.createListing(listingDTO))); }