Ejemplo n.º 1
0
        public async Task <IActionResult> PostAsync([FromBody] CollisionDTO value)
        {
            var now = DateTime.Now;

            try
            {
                var collision = await FillCollision(value);

                collision.LastSeen = now;

                var existing = await CollisionRepository.Find(value.Date, collision.Location);

                if (existing != null)
                {
                    collision.Key       = existing.Key;
                    collision.FirstSeen = existing.FirstSeen == DateTime.MinValue ? now : existing.FirstSeen;
                    await CollisionRepository.Update(collision);
                }
                else
                {
                    collision.FirstSeen = now;
                    await CollisionRepository.Add(collision);
                }

                return(Ok(Mapper.Map <CollisionDTO>(collision)));
            }
            catch (Exception e)
            {
                Logger.LogError("Error adding collision:\n{message}", e.Message);
                return(BadRequest(e.ToString()));
            }
        }
        public async void ShouldUpdateCollision()
        {
            //Given
            var now = DateTime.Now;

            var calendar = await CalendarRepository.Add(Calendars[0].Date);

            var company = await CompanyRepository.Add(Companies[0], true);

            var trip = await TripRepository.Add(Trips[0]);

            var vehicle = await VehicleRepository.Add(Vehicles[0], true);

            var status = await StatusRepository.Add(new Status { Name = "Open" }, true);

            var location = new Point(new Coordinate(-122.3456, 45.67890));

            var dbCollision = new Collision
            {
                Key            = 1,
                DateKey        = calendar.Key,
                Time           = now.TimeOfDay,
                CompanyKey     = company.Key,
                Location       = location,
                VehicleTypeKey = 4
            };

            await CollisionRepository.Add(dbCollision);


            //When
            var collisionDTO = new CollisionDTO
            {
                Date                = Calendars[0].Date + now.TimeOfDay,
                Location            = location.ToGeoJson <GeoJSON.Net.Geometry.Point>(),
                CompanyName         = Companies[0].Name,
                VehicleName         = Vehicles[0].Name,
                TripAlternateKey    = Trips[0].AlternateKey,
                VehicleTypeKey      = 4,
                OtherVehicleTypeKey = 1,
                ClaimStatusKey      = Convert.ToByte(status.Key)
            };

            var result = await Controller.PostAsync(collisionDTO);

            dbCollision = await CollisionRepository.Find(1);

            //Then
            var viewResult = Assert.IsType <OkObjectResult>(result);
            var model      = Assert.IsType <CollisionDTO>(viewResult.Value);

            Assert.NotNull(model);
            Assert.Equal(collisionDTO.Date.TimeOfDay, dbCollision.Time);
        }
Ejemplo n.º 3
0
        private async Task <Collision> FillCollision(CollisionDTO value)
        {
            var collision = Mapper.Map <Collision>(value);

            var calendarTask = CalendarRepository.Find(value.Date);
            var companyTask  = CompanyRepository.Find(value.CompanyName);
            var tripTask     = TripRepository.Find(value.TripAlternateKey);

            var vehicle = await VehicleRepository.Find(value.VehicleName) ?? await VehicleRepository.Add(new Vehicle { Name = value.VehicleName });

            collision.DateKey    = (await calendarTask).Key;
            collision.CompanyKey = (await companyTask).Key;
            collision.VehicleKey = vehicle?.Key;

            return(collision);
        }
        public void ShouldMapCollision()
        {
            //Given
            var now       = DateTime.Now;
            var point     = new GeoJSON.Net.Geometry.Point(new GeoJSON.Net.Geometry.Position(-45.12638971, 122.54672893563));
            var Collision = new CollisionDTO
            {
                Date     = now,
                Location = point
            };
            //When
            var dbCollision = Mapper.Map <Collision>(Collision);

            //Then
            Assert.NotNull(dbCollision);
            Assert.Equal(now.TimeOfDay, dbCollision.Time);
        }