public IActionResult UpdateGumballMachine(string location, [FromBody] UpdateGumballMachineDto gumballMachine) { var gm = _machines.Where(gm => gm.Location == location).FirstOrDefault(); if (gm == null) { return(NotFound()); } var defaultStates = new string[] { "NoQuarterState", "HasQuarterState", "SoldOutState", "SoldState", "WinnerState" }; if (!defaultStates.Any(ds => ds.ToLower() == gumballMachine.CurrentState.Name.ToLower())) { return(BadRequest()); } gm.Count = gumballMachine.Inventory; gm.CurrentState = Helper.StateFactory(gumballMachine.CurrentState.Name, gm); gm.Location = gumballMachine.Location; var gumballMachineDto = new GumballMachineDto { Location = gm.Location, Inventory = gm.Count, CurrentState = new CurrentStateDto { Name = gm.CurrentState.GetType().Name } }; return(CreatedAtRoute("GetGumballMachine", new { location = gm.Location }, gumballMachineDto)); }
public ActionResult <GumballMachineDto> GetGumballMachine(string location) { var gm = _machines.Where(m => m.Location.ToLower() == location.ToLower()).FirstOrDefault(); if (gm == null) { return(NotFound()); } var gumballMachineDto = new GumballMachineDto { Location = gm.Location, Inventory = gm.Count, CurrentState = new CurrentStateDto { Name = gm.CurrentState.GetType().Name } }; return(gumballMachineDto); }
public IActionResult CreateGumballMachine([FromBody] CreateGumballMachineDto gumballMachine) { if (_machines.Any(m => m.Location.ToLower() == gumballMachine.Location.ToLower())) { return(Conflict()); } var gm = new GumballMachine(gumballMachine.Inventory, gumballMachine.Location); _machines.Add(gm); var gumballMachineDto = new GumballMachineDto { Location = gm.Location, Inventory = gm.Count, CurrentState = new CurrentStateDto { Name = gm.CurrentState.GetType().Name } }; return(CreatedAtRoute("GetGumballMachine", new { location = gumballMachine.Location }, gumballMachineDto)); }