public async Task <IActionResult> Create([FromBody] DroneViewModel drone) { if (drone == null) { return(BadRequest()); } var id = await _droneServiceAsync.Add(drone); return(Created($"api/Drone/{id}", id)); //HTTP201 Resource created }
public async Task <IActionResult> Update(int id, [FromBody] DroneViewModel drone) { if (drone == null || drone.Id != id) { return(BadRequest()); } var retVal = await _droneServiceAsync.Update(drone); if (retVal == 0) { return(StatusCode(304)); //Not Modified } else if (retVal == -1) { return(StatusCode(412, "DbUpdateConcurrencyException")); //412 Precondition Failed - concurrency } else { return(Accepted(drone)); } }
public async Task <int> addDrone(HttpClient client) { DroneViewModel vmentity = new DroneViewModel { UserId = 1, CompanyAccountId = 1, Name = "drone test 1", Token = "tt1223334444tt", StatusCode = DroneStatusCode.Maintenance, TestText = "tt updated" }; client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", TokenTest.TokenValue); var response = await client.PostAsync("/api/drone", new StringContent( JsonConvert.SerializeObject(vmentity), Encoding.UTF8, "application/json")); var jsonString = await response.Content.ReadAsStringAsync(); int lastAdded = 0; int.TryParse(jsonString, out lastAdded); return(lastAdded); }
public async Task drone_add_update_delete() { var httpclient = fixture.Client; ; if (String.IsNullOrEmpty(TokenTest.TokenValue)) { await TokenTest.token_get(httpclient); } DroneViewModel drone = new DroneViewModel { UserId = 1, CompanyAccountId = 1, Name = "drone test 1", Token = "tt1223334444tt", StatusCode = DroneStatusCode.Maintenance, TestText = "tt test" }; httpclient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", TokenTest.TokenValue); var response = await httpclient.PostAsync("/api/drone", new StringContent( JsonConvert.SerializeObject(drone), Encoding.UTF8, "application/json")); response.EnsureSuccessStatusCode(); Assert.Equal(HttpStatusCode.Created, response.StatusCode); var lastAddedId = await response.Content.ReadAsStringAsync(); Assert.True(int.Parse(lastAddedId) > 1); int id = 0; int.TryParse(lastAddedId, out id); //get inserted var util = new UtilityExt(); var vmentity = await util.GetDrone(httpclient, id); //update test vmentity.TestText = "tt updated"; response = await httpclient.PutAsync("/api/drone/" + id.ToString(), new StringContent(JsonConvert.SerializeObject(vmentity), Encoding.UTF8, "application/json")); response.EnsureSuccessStatusCode(); Assert.Equal(HttpStatusCode.Accepted, response.StatusCode); //confirm update response = await httpclient.GetAsync("/api/drone/" + id.ToString()); response.EnsureSuccessStatusCode(); var jsonString = await response.Content.ReadAsStringAsync(); var oj = JObject.Parse(jsonString); var tt = oj["testText"].ToString(); Assert.Equal(tt, vmentity.TestText); //another update with same account - concurrency vmentity.TestText = "tt updated 2"; response = await httpclient.PutAsync("/api/drone/" + id.ToString(), new StringContent(JsonConvert.SerializeObject(vmentity), Encoding.UTF8, "application/json")); Assert.Equal(HttpStatusCode.PreconditionFailed, response.StatusCode); //delete test response = await httpclient.DeleteAsync("/api/drone/" + id.ToString()); response.EnsureSuccessStatusCode(); Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); }
public int CalcularTempoTotalEntregaEmMinutos(IEnumerable <PedidoViewModel> pedidos, DroneViewModel drone) { if (!pedidos.Any()) { return(0); } var localizacaoLoja = new Localizacao(-23.5880684, -46.6564195); var localizacaoOrigem = localizacaoLoja; Localizacao localizacaoCliente; double distanciaTotal = 0; foreach (var pedido in pedidos) { localizacaoCliente = new Localizacao(pedido.Cliente.Latitude, pedido.Cliente.Longitude); distanciaTotal += localizacaoOrigem.CalcularDistanciaEmKilometros(localizacaoCliente); localizacaoOrigem = localizacaoCliente; } distanciaTotal += localizacaoOrigem.CalcularDistanciaEmKilometros(localizacaoLoja); return(distanciaTotal.CalcularTempoTrajetoEmMinutos(drone.Velocidade)); }