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))); }
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); }