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));
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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));
        }