public async Task <bool> CreateExternal(ExternalRepairServiceModel externalRepairServiceModel)
        {
            externalRepairServiceModel.StartedOn = DateTime.UtcNow;
            externalRepairServiceModel.Name      = externalRepairServiceModel.Name + "_" +
                                                   externalRepairServiceModel.StartedOn.ToString("yyyy/MM/dd_HH:mm");

            if (_context.ExternalRepairs.Any(x => x.Name == externalRepairServiceModel.Name))
            {
                return(false);
            }

            var externalRepair = externalRepairServiceModel.To <ExternalRepair>();

            externalRepair.RepairedSystem = await GetRepairedSystemIdByName(externalRepairServiceModel.RepairedSystem.Name);

            externalRepair.ExternalRepairProvider = await GetExternalRepairProviderByName(externalRepairServiceModel.ExternalRepairProvider.Name);

            _context.ExternalRepairs.Add(externalRepair);

            var vehicle = _context.Vehicles.Find(externalRepairServiceModel.VehicleId);

            vehicle.Mileage    = externalRepair.Mileage;
            vehicle.IsInRepair = true;
            vehicle.ExternalRepairs.Add(externalRepair);
            _context.Update(vehicle);
            var result = await _context.SaveChangesAsync();

            return(result > 0);
        }
        public async Task <bool> FinalizeExternal(ExternalRepairServiceModel externalRepairServiceModel)
        {
            var externalRepair = await _context.ExternalRepairs.Include(x => x.Vehicle).SingleOrDefaultAsync(x => x.Id == externalRepairServiceModel.Id);

            if (externalRepair.FinishedOn != null)
            {
                return(false);
            }
            externalRepair.Vehicle.IsInRepair = false;

            externalRepair.LaborCost   = externalRepairServiceModel.LaborCost;
            externalRepair.PartsCost   = externalRepairServiceModel.PartsCost;
            externalRepair.Description = externalRepairServiceModel.Description;
            externalRepair.RepairCost  = externalRepair.LaborCost + externalRepair.PartsCost;
            externalRepair.FinishedOn  = DateTime.UtcNow;

            _context.Update(externalRepair);
            _context.Update(externalRepair.Vehicle);
            var result = await _context.SaveChangesAsync();

            return(result > 0);
        }