// добавление нового обращения
        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();
        }
Exemple #2
0
        // добавление нового работника
        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();
        }
Exemple #3
0
        // добавление неисправности
        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();
        }
Exemple #4
0
 // добавить адрес
 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();
 }