// добавить нового клиента 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 AppendPersonRequest(PersonRequestViewData personRequestViewData) { Person person = new Person { Surname = personRequestViewData.Surname, Name = personRequestViewData.Name, Patronymic = personRequestViewData.Patronymic, Passport = personRequestViewData.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); } PersonRequest personRequest = new PersonRequest { PersonId = _context.Persons.First(p => p.Passport == person.Passport).Id, PersonRequestStatusId = _context.PersonRequestStatuses.First(prs => prs.Title == "Необходимо перезвонить!").Id, DescriptionOfTheProblem = personRequestViewData.DescriptionOfTheProblem, TelephoneNumber = personRequestViewData.Telephone }; _context.PersonRequests.Add(personRequest); await _context.SaveChangesAsync(); }
// добавление нового работника 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 AppendClient(ClientViewData clientViewData) { // проверка данных по персоне Person person = new Person { Surname = clientViewData.Surname, Name = clientViewData.Name, Patronymic = clientViewData.Patronymic, Passport = clientViewData.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); } // проверка данных по адресу Address address = new Address { Building = clientViewData.Building, Street = clientViewData.Street, Flat = clientViewData.Flat }; // в случае если мы не нашли такой адрес, то мы просто будем добавлять его if (!_context.Addresses.Any(a => a.Street == address.Street && a.Building == address.Building && a.Flat == address.Flat)) { await AppendAddress(address); } // создание и добавление клиента в БД Client client = new Client { PersonId = _context.Persons.First(p => p.Passport == person.Passport).Id, AddressId = _context.Addresses.First(a => a.Street == address.Street && a.Building == address.Building && a.Flat == address.Flat).Id, DateOfBorn = clientViewData.DateOfBorn, TelephoneNumber = clientViewData.TelephoneNumber }; _context.Clients.Add(client); await _context.SaveChangesAsync(); }