Example #1
0
        public async Task <IActionResult> PostAsync([FromBody] TripDTO value)
        {
            var now = DateTime.Now;

            var existingTask = TripRepository.Find(value.AlternateKey);

            var trip = Mapper.Map <Trip>(value);

            trip.FirstSeen = trip.LastSeen = now;

            // Get the reference properties set up
            var vehicleTask = VehicleRepository.Find(value.VehicleName);
            var endDateTask = CalendarRepository.Find(value.EndTime);
            var companyTask = CompanyRepository.Find(value.CompanyName);

            // await this first before finding the next date
            trip.EndDateKey = (await endDateTask).Key;
            var startDateTask = CalendarRepository.Find(value.StartTime);

            trip.CompanyKey = (await companyTask).Key;

            trip.StartDateKey = (await startDateTask).Key;

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

            trip.VehicleKey = vehicle.Key;

            var existing = await existingTask;

            if (existing != null)
            {
                trip.Key       = existing.Key;
                trip.FirstSeen = existing.FirstSeen == DateTime.MinValue ? now : existing.FirstSeen;
            }

            var upsertTask = existing == null?TripRepository.Add(trip, false) : TripRepository.Update(trip, false);

            try
            {
                await upsertTask;
                await TripRepository.SaveChanges();
            }
            catch (Exception e)
            {
                Logger.LogError("Error adding trip:\n{message}\n{inner}", e.Message, e.InnerException?.Message);
                return(BadRequest(e.ToString()));
            }
            return(Ok(Mapper.Map <TripDTO>(trip)));
        }
        public async Task <IActionResult> EndDeployment(long key)
        {
            Logger.LogDebug($"Ending deployment {key}...");
            try
            {
                var deployment = await DeploymentRepository.Find(key);

                var now          = DateTime.Now;
                var calendarTask = CalendarRepository.Find(now);
                deployment.EndTime    = now.TimeOfDay;
                deployment.LastSeen   = now;
                deployment.EndDateKey = (await calendarTask).Key;

                await DeploymentRepository.Update(deployment);

                return(Ok(Mapper.Map <DeploymentDTO>(deployment)));
            }
            catch (Exception e)
            {
                return(BadRequest(e.ToString()));
            }
        }
        public async Task <IActionResult> GetAbsenceRequest([FromRoute] int id)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            AbsenceRequest absenceRequest = await _repo.Find(id);

            if (absenceRequest == null)
            {
                return(NotFound());
            }

            // users cannot see others requests except admins
            if (!User.IsInRole(SeedData.AdminRole) && absenceRequest.UserId != GetCurrentUserId())
            {
                return(NotFound());
            }

            return(Ok(_mapper.Map <AbsenceRequestDto>(absenceRequest)));
        }
Example #4
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);
        }
        private async Task <Complaint> FillComplaint(ComplaintDTO value)
        {
            var complaint = Mapper.Map <Complaint>(value);

            var calendarTask = CalendarRepository.Find(value.SubmittedDate);
            var companyTask  = CompanyRepository.Find(value.CompanyName);
            var vehicleTask  = !string.IsNullOrEmpty(value.VehicleName) ?
                               VehicleRepository.Find(value.VehicleName) : Task.FromResult <Vehicle>(null);

            complaint.SubmittedDateKey = (await calendarTask).Key;
            complaint.CompanyKey       = (await companyTask).Key;

            var vehicle = !string.IsNullOrEmpty(value.VehicleName) ?
                          await vehicleTask ?? await VehicleRepository.Add(new Vehicle { Name = value.VehicleName }) : null;

            complaint.VehicleKey = vehicle?.Key;

            return(complaint);
        }