// добавление нового работника public async Task AppendWorker(WorkerViewData workerViewData) { Person person = new Person { Surname = workerViewData.Surname, Name = workerViewData.Name, Patronymic = workerViewData.Patronymic, Passport = workerViewData.Passport }; // проверяем есть ли уже человек с таким паспортом но с другими ФИО. Если есть то мы будем кидать исключение if (_context.Persons.Any(p => p.Passport == person.Passport && (p.Surname != person.Surname || p.Patronymic != person.Patronymic || p.Name != person.Name))) { throw new Exception("Человек с таким паспортом уже существует. Проверьте корректность данных"); } // если у нас нет такого человека с такими данными, то мы добавляем его 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)) { _personProcess.AppendPerson(person); } // ищем данные о статусе. если мы не находим, то кидаем исклчение WorkerStatus status = _context.WorkerStatuses.First(ws => ws.Status == workerViewData.Status); if (status == null) { throw new Exception("Данный статус не существует. Данные недействительны"); } // ищем специальность. если не находим то кидаем исключение Specialty specialty = _context.Specialties.First(s => s.Title == workerViewData.Specialty); if (specialty == null) { throw new Exception("Данной специальности не существует. Данные недействительны"); } // создание и добавление нового работника Worker worker = new Worker { // поиск персоны. можно было найти его раньше, но данные могли быть недействительны PersonId = _context.Persons.First(p => p.Passport == person.Passport).Id, SpecialtyId = specialty.Id, StatusId = status.Id, WorkExperience = workerViewData.WorkExperience, Discharge = workerViewData.Discharge }; _context.Workers.Add(worker); await _context.SaveChangesAsync(); }
public async Task PostWorker(WorkerViewData worker) => await _workerProcess.AppendWorker(worker);