Esempio n. 1
0
        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));
        }
Esempio n. 2
0
 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));
        }
Esempio n. 4
0
        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));
        }
Esempio n. 8
0
        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);
        }