// добавление нового обращения 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 AppendMalfunction(MalfunctionViewData malfunctionViewData) { // поиск неисправности. если мы находим неисправность, то ругаемся что данная неисправность уже существует Malfunction malfunction = _context.Malfunctions.FirstOrDefault(m => String.Equals(m.Title, malfunctionViewData.Title, StringComparison.CurrentCultureIgnoreCase)); if (malfunction != null) { throw new WebApiException("Данная неисправность уже существует. Добавить еще одну такую же невозможно"); } // создаем неисправность malfunction = new Malfunction { TimeToFix = malfunctionViewData.TimeToFix, Title = malfunctionViewData.Title, Details = new List <Detail>() }; // создание и добавление (в случае надобности) новой детали for (int i = 0; i < malfunctionViewData.Details.Count; i++) { // поиск детали по наименованию Detail detail = _context.Details.FirstOrDefault(d => d.Title == malfunctionViewData.Details[i].Title); // если мы не находим такую деталь, то мы добавляем ее if (detail == null) { _context.Details.Add(malfunctionViewData.Details[i]); await _context.SaveChangesAsync(); } // после добавления детали при необходимости, добавляем деталь к неисправности malfunction.Details.Add(detail); } // добавляем неисправность _context.Malfunctions.Add(malfunction); await _context.SaveChangesAsync(); }
// добавить адрес private async Task AppendAddress(Address address) { _context.Addresses.Add(address); await _context.SaveChangesAsync(); }
// добавить адрес private async Task AppendMark(Mark mark) { _context.Marks.Add(mark); await _context.SaveChangesAsync(); }
// добавление нового заказа public async Task AppendRepairOrder(RepairOrderViewForm repairOrderViewForm) { if (_context.Cars.FirstOrDefault(c => c.StateNumber == repairOrderViewForm.CarViewData.StateNumber && ( c.Mark.Model != repairOrderViewForm.CarViewData.MarkModel || c.Mark.Title != repairOrderViewForm.CarViewData.MarkModel )) != null) { throw new WebApiException("Авто с таким гос. номер уже существует. Проверьте корректность данных"); } // поиск авто. если не нашли то добавляем его if (!_carProcess.IsSetCat(repairOrderViewForm.CarViewData.StateNumber).Result) { await _carProcess.AppendCar(repairOrderViewForm.CarViewData); } // после добавления находим это авто Car car = _context.Cars.FirstOrDefault(c => c.StateNumber == repairOrderViewForm.CarViewData.StateNumber); // после поиска второй раз убеждаемся что мы все нашли и что все хорошо if (car == null) { throw new WebApiException("Данного авто не существует. Данные недействительны"); } // поиск клиента. если не нашли, то добавляем if (!_clientProcess.IsSetClient(repairOrderViewForm.ClientViewData.Passport).Result) { await _clientProcess.AppendClient(repairOrderViewForm.ClientViewData); } // поиск после добавления клиента Client client = _context.Clients.Include(c => c.Person) .FirstOrDefault(c => c.Person.Passport == repairOrderViewForm.ClientViewData.Passport); // убеждаемся что мы все нашли и что добавление прошло успешно if (client == null) { throw new WebApiException("Данного клиента не существует. Данные недействительны"); } // поиск работника. если не нашли, то добавляем string[] wokerData = repairOrderViewForm.Worker.Split(' ', StringSplitOptions.RemoveEmptyEntries); Worker worker = _context.Workers.Include(w => w.Person).FirstOrDefault(w => w.Person.Surname == wokerData[0] && w.Person.Name == wokerData[1] && w.Person.Patronymic == wokerData[2]); if (worker == null) { throw new WebApiException("Данного работника не существует. Данные недействительны"); } // создание новой заявки RepairOrder repairOrder = new RepairOrder { DateOfTheApplication = DateTime.Now, IsReady = false, CarId = car.Id, ClientId = client.Id, WorkerId = worker.Id }; // добавляем неисправности for (int i = 0; i < repairOrderViewForm.MalfunctionViewModels.Count; i++) { repairOrder.Malfunctions.Add(_context.Malfunctions.FirstOrDefault(m => m.Title == repairOrderViewForm.MalfunctionViewModels[i].Title)); } // добавляем и сохраняем изменения _context.RepairOrders.Add(repairOrder); worker.StatusId = _context.WorkerStatuses.First(ws => ws.Status == "Работает в данный момент").Id; await _context.SaveChangesAsync(); }
// добавить персону public async Task AppendPerson(Person person) { _context.Persons.Add(person); await _context.SaveChangesAsync(); }