public async Task <int> CreateWorkOrder(WorkOrder raiseRepair) { var entry = _repairsContext.WorkOrders.Add(raiseRepair); await _repairsContext.SaveChangesAsync(); return(entry.Entity.Id); }
public async Task <IActionResult> Create(RepairOrder repairOrder) { if (ModelState.IsValid) { repairOrder.RepairStartDateTime = DateTime.Now; _context.Add(repairOrder); await _context.SaveChangesAsync(); return(RedirectToAction("Index")); } var viewModel = await GetRepairOrderViewModelWithAllTools(); viewModel.RepairOrder = repairOrder; return(View(viewModel)); }
public async Task CreateSlotBooking(string appointmentRef, int workOrderId, string notes = null) { var refArray = appointmentRef.Split('/', 2); var slotId = int.Parse(refArray[0]); var slotDate = DateTime.ParseExact(refArray[1], DateExtensions.DateFormat, null); var appointment = await _repairsContext.AvailableAppointmentDays .Where(a => a.Id == slotId) .Select(a => new { HasOpenSlots = a.ExistingAppointments.Count(ea => ea.Date.Date == slotDate.Date) < a.AvailableCount, StartTime = a.AvailableAppointment.StartTime, EndTime = a.AvailableAppointment.EndTime }).SingleOrDefaultAsync(); if (appointment is null) { throw new ResourceNotFoundException("No Appointment Exists"); } if (!appointment.HasOpenSlots) { throw new NotSupportedException("Appointment slot over capacity"); } var existingAppointment = await _repairsContext.Appointments.SingleOrDefaultAsync(a => a.WorkOrderId == workOrderId); if (existingAppointment != null) { _repairsContext.Appointments.Remove(existingAppointment); } await _repairsContext.Appointments.AddAsync(new Infrastructure.Hackney.Appointment { WorkOrderId = workOrderId, DayId = slotId, Date = slotDate, StartTime = appointment.StartTime, EndTime = appointment.EndTime, AppointmentNote = notes }); await _repairsContext.SaveChangesAsync(); }
public async Task <int> CreateJobStatusUpdate(JobStatusUpdate update) { update.AuthorName = _currentUserService.GetUser().Name(); update.AuthorEmail = _currentUserService.GetUser().Email(); await _repairsContext.JobStatusUpdates.AddAsync(update); await _repairsContext.SaveChangesAsync(); return(update.Id); }
public async Task ArchiveAsync(string operativePrn) { var operative = await _context.Operatives.SingleOrDefaultAsync(o => o.PayrollNumber == operativePrn); if (operative is null) { ThrowHelper.ThrowNotFound($"Operative with payroll {operativePrn} not found"); } _context.Remove(operative); await _context.SaveChangesAsync(); }
public async Task <int> CreateWorkOrderCompletion(WorkOrderComplete completion) { var user = _currentUserService.GetUser(); completion.JobStatusUpdates.ForEach(jsu => { jsu.AuthorName = user.Name(); jsu.AuthorEmail = user.Email(); }); _repairsContext.WorkOrderCompletes.Add(completion); await _repairsContext.SaveChangesAsync(); return(completion.Id); }