public async Task <ActionResult <Data.Models.Store> > PatchStore(string storeId, JsonPatchDocument <Data.Models.StoreForUpdate> patchDocument) { try { Data.Entities.Store dbStore = await _repository.GetStoreAsync(storeId); if (dbStore == null) { return(NotFound()); } var updatedStore = _mapper.Map <Data.Models.StoreForUpdate>(dbStore); patchDocument.ApplyTo(updatedStore, ModelState); _mapper.Map(updatedStore, dbStore); if (await _repository.SaveChangesAsync()) { Data.Models.Store savedStore = _mapper.Map <Data.Models.Store>(await _repository.GetStoreAsync(storeId)); return(Ok(savedStore)); } else { return(StatusCode(StatusCodes.Status500InternalServerError, "Unable to save to database")); } } catch (Exception ex) { return(StatusCode(StatusCodes.Status500InternalServerError, "Unable to patch store " + ex.Message)); } }
public async Task <ActionResult <Data.Models.Store> > CreateNewStore(Data.Models.StoreForCreate newStore) { Data.Entities.Store dbNewStore = null; try { dbNewStore = _mapper.Map <Data.Entities.Store>(newStore); } catch (Exception ex) { return(BadRequest("Input is in invalid format: " + ex.Message)); } if (dbNewStore == null) { return(BadRequest("Input is in invalid format")); } await _repository.AddAsync <Data.Entities.Store>(dbNewStore); await _repository.SaveChangesAsync(); Data.Models.Store addedStore = _mapper.Map <Data.Models.Store>(dbNewStore); var url = _linkgenerator.GetPathByAction(HttpContext, "GetStoreByStoreId", "Stores", addedStore); return(this.Created(url, addedStore)); }
public async Task <ActionResult <Data.Models.Store> > UpdateStore(string storeId, Data.Models.StoreForUpdate updatedStore) { try { Data.Entities.Store dbStore = await _repository.GetStoreAsync(storeId); if (dbStore == null) { return(NotFound()); } _mapper.Map(updatedStore, dbStore); if (await _repository.SaveChangesAsync()) { Data.Models.Store savedStore = _mapper.Map <Data.Models.Store>(dbStore); return(Ok(savedStore)); } else { return(BadRequest("Failed to update.")); } } catch (Exception ex) { return(StatusCode(StatusCodes.Status500InternalServerError, "Database exception: " + ex.Message)); } }