public async Task <ActionResult <ItemView> > AddProduct([FromBody] NewItemDto newProduct) { try { if (newProduct == null) { return(StatusCode(400)); } if (!ModelState.IsValid) { return(new InvalidInputResponse(ModelState)); } var result = await _Mediator.Send(newProduct); var view = _Mediator.Send(new GetItemByIdQuery() { Id = result }); return(StatusCode(201, view)); } catch (NotFoundException e) { return(StatusCode(404, e.Message)); } catch (DuplicateKeyException e) { ModelState.AddModelError("Code", e.Message); return(new InvalidInputResponse(ModelState)); } catch (Exception) { return(StatusCode(500, "Server Error, Try Again Later")); } }
public async Task <int> AddNew([FromBody] NewItemDto newItem) { int newItemId = -1; //A bit of duplicate looking code, but we want to make sure the type matches // a case before we do any work, and we want to make sure work has been done // before we save any changes. switch (newItem.ItemType) { case "make": { VehicleMake makeToAdd = new VehicleMake { VehicleMakeName = newItem.ItemValue }; await _vehicleMakeRepository.AddAsync(makeToAdd); await _vehicleMakeRepository.SaveChangesAsync(); newItemId = makeToAdd.VehicleMakeId; break; } case "model": { VehicleModel modelToAdd = new VehicleModel { VehicleModelName = newItem.ItemValue, VehicleMakeId = newItem.ItemParentId }; await _vehicleModelRepository.AddAsync(modelToAdd); await _vehicleMakeRepository.SaveChangesAsync(); newItemId = modelToAdd.VehicleModelId; break; } } //we are only expecting one change return(newItemId); }