public async Task PutCar(int id, CarViewData car)
 {
     if (id != car.Id)
     {
         throw new Exception("Данного авто не существует");
     }
     await _carProcess.ChangeCar(car);
 }
 public RepairOrderViewForm(int id, ClientViewData clientViewData, CarViewData carViewData, string worker, List <MalfunctionViewForm> malfunctionViewModels)
 {
     Id                    = id;
     ClientViewData        = clientViewData;
     CarViewData           = carViewData;
     Worker                = worker;
     MalfunctionViewModels = malfunctionViewModels;
 }
        // добавить нового клиента
        public async Task AppendCar(CarViewData carViewData)
        {
            // проверка данных по персоне
            Person person = new Person {
                Surname    = carViewData.Surname,
                Name       = carViewData.Name,
                Patronymic = carViewData.Patronymic,
                Passport   = carViewData.Passport
            };

            // проверяем есть ли уже человек с таким паспортом но с другими ФИО. Если есть то мы будем кидать исключение
            if (_context.Persons.Any(p =>
                                     p.Passport == person.Passport && (p.Surname != person.Surname || p.Patronymic != person.Patronymic ||
                                                                       p.Name != person.Name)))
            {
                throw new WebApiException("Человек с таким паспортом уже существует. Проверьте корректность данных");
            }

            // если у нас нет такого человека с такими данными, то мы добавляем его
            if (!_context.Persons.Any(p => p.Passport == person.Passport))
            {
                await _personProcess.AppendPerson(person);
            }

            // проверка данных по адресу
            Mark mark = new Mark {
                Title = carViewData.MarkTitle,
                Model = carViewData.MarkModel
            };

            // в случае если мы не нашли такой адрес, то мы просто будем добавлять его
            if (!_context.Marks.Any(m => m.Title == mark.Title && m.Model == mark.Model))
            {
                await AppendMark(mark);
            }

            // создание и добавление клиента в БД
            Car car = new Car {
                Color       = carViewData.Color,
                StateNumber = carViewData.StateNumber,
                YearOfIssue = carViewData.YearOfIssue,
                OwnerId     = _context.Persons.First(p => p.Passport == person.Passport).Id,
                MarkId      = _context.Marks.First(m => m.Title == mark.Title && m.Model == mark.Model).Id
            };

            _context.Cars.Add(car);
            await _context.SaveChangesAsync();
        }
        // изменение данных клиента
        public async Task ChangeCar(CarViewData carViewData)
        {
            // получаем клиента для изменения
            Car car = _context.Cars.FirstOrDefault(c => c.Id == carViewData.Id);

            if (car == null)
            {
                throw new WebApiException($"Автомобиль не был найден.");
            }

            // создание человека
            Person person = new Person {
                Surname    = carViewData.Surname,
                Name       = carViewData.Name,
                Patronymic = carViewData.Patronymic,
                Passport   = carViewData.Passport
            };

            // проверяем есть ли уже человек с таким паспортом но с другими ФИО. Если есть то мы будем кидать исключение
            if (_context.Persons.Any(p =>
                                     p.Passport == person.Passport && (p.Surname != person.Surname || p.Patronymic != person.Patronymic ||
                                                                       p.Name != person.Name)))
            {
                throw new WebApiException("Человек с таким паспортом уже существует. Проверьте корректность данных");
            }

            // если у нас нет такого человека с такими данными, то мы добавляем его
            if (_context.Persons.Any(p =>
                                     p.Passport == person.Passport && p.Surname == person.Surname && p.Name == person.Name &&
                                     p.Patronymic == person.Patronymic || p.Passport != person.Passport))
            {
                await _personProcess.AppendPerson(person);
            }

            car.Color       = carViewData.Color;
            car.StateNumber = carViewData.StateNumber;

            var owner = _context.Persons.FirstOrDefault(p => p.Passport == person.Passport);

            if (owner == null)
            {
                throw new WebApiException("Владелец авто не был найден.");
            }
            car.OwnerId = owner.Id;
            await _context.SaveChangesAsync();
        }
 public async Task PostCar(CarViewData car) => await _carProcess.AppendCar(car);