public async Task <IActionResult> Create([Bind("Id,PersonId,ServiceId,Quantity,Price,TotalPayment,CompanyId,TotalAmountPaid,TotalAmountToPay,ReceiptStatusId")] ServiceReceipt serviceReceipt) { if (ModelState.IsValid) { var applicationDbContext = _context.ServiceReceipt .Include(s => s.Company) .Include(s => s.ReceiptStatus) .Include(s => s.Service) .Include(s => s.ServiceProvider); serviceReceipt.TotalPayment = serviceReceipt.Quantity * serviceReceipt.Price; serviceReceipt.TotalAmountToPay = serviceReceipt.TotalPayment - serviceReceipt.TotalAmountPaid; _context.Add(serviceReceipt); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["CompanyId"] = new SelectList(_context.Company, "Id", "ComanyName", serviceReceipt.CompanyId); ViewData["ReceiptStatusId"] = new SelectList(_context.ReceiptStatus, "Id", "ReceiptStatusName", serviceReceipt.ReceiptStatusId); ViewData["ServiceId"] = new SelectList(_context.Service, "Id", "ServiceName", serviceReceipt.ServiceId); ViewData["PersonId"] = new SelectList(_context.Person, "Id", "FullName", serviceReceipt.PersonId); return(View(serviceReceipt)); }
public async Task SetServiceOrdersToReceiptAsync(ServiceReceipt serviceReceipt) { serviceReceipt.ServiceOrders = await this.dbContext.ServiceOrders .Where(order => order.Status.Name == GlobalConstants.StatusActive && order.IssuerId == serviceReceipt.RecipientId) .ToListAsync(); }
public async Task <IActionResult> StartService(int?id) { var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier); Employee employee = await _context.Employees.Where(c => c.IdentityUserId == userId).FirstOrDefaultAsync(); Vehicle vehicle = await _context.Vehicles.Where(v => v.Id == id).FirstOrDefaultAsync(); Issue issue = await _context.Issues.Where(i => i.VehicleId == id && i.Resolved == false).FirstOrDefaultAsync(); if (issue == null) { //if no issues are found then it puts the vehicle operational vehicle.IsOperational = true; vehicle.IsAvailable = true; _context.Vehicles.Update(vehicle); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ServiceReceipt serviceReceipt = PopulateServiceReceipt(employee.Id, vehicle.Id, issue.ServiceNeeded); IssueSRVehicleVM iSRVViewModel = new() { Employee = employee, Vehicle = vehicle, Issue = issue, ServiceReceipt = serviceReceipt }; return(View(iSRVViewModel)); }
public IActionResult Index(ServiceReceipt serviceReceipt) { var applicationDbContext = _context.ServiceReceipt .Include(s => s.Company) .Include(s => s.ReceiptStatus) .Include(s => s.Service) .Include(s => s.ServiceProvider); serviceReceipt.TotalPayment = serviceReceipt.Quantity * serviceReceipt.Price; serviceReceipt.TotalAmountToPay = serviceReceipt.TotalPayment - serviceReceipt.TotalAmountPaid; return(View(serviceReceipt)); }
public async Task <IActionResult> StartService(ServiceReceipt serviceReceipt) { Vehicle vehicle = await _context.Vehicles.Where(v => v.Id == serviceReceipt.VehicleId).FirstOrDefaultAsync(); TwilioText.SendTextToDriver(Secrets.MY_PHONE_NUMBER, vehicle.DoorKey); vehicle.IsAvailable = false; serviceReceipt.StartTime = DateTime.Now; _context.ServiceReceipts.Add(serviceReceipt); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); }
public async Task <IActionResult> ServicePage() { var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier); Employee employee = await _context.Employees.Where(c => c.IdentityUserId == userId).SingleOrDefaultAsync(); // Service Receipt filled out. Start, end ServiceReceipt serviceReceipt = await _context.ServiceReceipts.Where(sr => sr.EmployeeId == employee.Id && sr.EndTime == null).SingleOrDefaultAsync(); serviceReceipt.Vehicle = await _context.Vehicles.Where(v => v.Id == serviceReceipt.VehicleId).SingleOrDefaultAsync(); serviceReceipt.Employee = employee; return(View(serviceReceipt)); }
public async Task <IActionResult> CompleteService(int?id) { ServiceReceipt serviceReceipt = await _context.ServiceReceipts.Where(sr => sr.Id == id).SingleOrDefaultAsync(); var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier); Employee employee = await _context.Employees.Where(c => c.IdentityUserId == userId).SingleOrDefaultAsync(); serviceReceipt.EndTime = DateTime.Now; serviceReceipt.Employee = employee; _context.Issues.Where(i => i.Id == serviceReceipt.IssueId).FirstOrDefault().Resolved = true; _context.Vehicles.Where(v => v.Id == serviceReceipt.VehicleId).FirstOrDefault().IsOperational = true; _context.Vehicles.Where(v => v.Id == serviceReceipt.VehicleId).FirstOrDefault().IsAvailable = true; _context.Update(serviceReceipt); await _context.SaveChangesAsync(); return(View(serviceReceipt)); }
public async Task <IActionResult> Edit(int id, [Bind("Id,PersonId,ServiceId,Quantity,Price,TotalPayment,CompanyId,TotalAmountPaid,TotalAmountToPay,ReceiptStatusId")] ServiceReceipt serviceReceipt) { if (id != serviceReceipt.Id) { return(NotFound()); } if (ModelState.IsValid) { try { var applicationDbContext = _context.ServiceReceipt .Include(s => s.Company) .Include(s => s.ReceiptStatus) .Include(s => s.Service) .Include(s => s.ServiceProvider); serviceReceipt.TotalPayment = serviceReceipt.Quantity * serviceReceipt.Price; serviceReceipt.TotalAmountToPay = serviceReceipt.TotalPayment - serviceReceipt.TotalAmountPaid; _context.Update(serviceReceipt); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ServiceReceiptExists(serviceReceipt.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["CompanyId"] = new SelectList(_context.Company, "Id", "ComanyName", serviceReceipt.CompanyId); ViewData["ReceiptStatusId"] = new SelectList(_context.ReceiptStatus, "Id", "ReceiptStatusName", serviceReceipt.ReceiptStatusId); ViewData["ServiceId"] = new SelectList(_context.Service, "Id", "ServiceName", serviceReceipt.ServiceId); ViewData["PersonId"] = new SelectList(_context.Person, "Id", "FullName", serviceReceipt.PersonId); return(View(serviceReceipt)); }
public async Task <int> CreateServiceReceiptAsync(string recipientId) { var serviceReceipt = new ServiceReceipt { IssuedOnPicture = null, RecipientId = recipientId, }; await this.ordersService.SetServiceOrdersToReceiptAsync(serviceReceipt); foreach (var serviceOrder in serviceReceipt.ServiceOrders) { await this.ordersService.CompleteServiceOrdersAsync(serviceOrder.Id); } await this.dbContext.ServiceReceipts.AddAsync(serviceReceipt); await this.dbContext.SaveChangesAsync(); return(serviceReceipt.Id); }