// оформление новой заявки вместе с использованием заявки оставленной человеком
        public async Task <RepairOrderViewForm> GetRepairOrderViewFormWithPersonRequest(int id)
        {
            PersonRequest personRequest = _context.PersonRequests
                                          .Include(pr => pr.Person)
                                          .FirstOrDefault(pr => pr.Id == id);

            if (personRequest == null)
            {
                throw new WebApiException("Данной заявки нет. Данные недействительны");
            }

            // создаем переменную в которую мы запихиваем новые данные для оформление заявки на ремонт
            ClientViewData clientViewData = new ClientViewData(
                new Client {
                TelephoneNumber = personRequest.TelephoneNumber
            },
                new Person
            {
                Surname    = personRequest.Person.Surname, Name = personRequest.Person.Name,
                Patronymic = personRequest.Person.Patronymic, Passport = personRequest.Person.Passport
            }, new Address());

            return(await Task.Run(() => new RepairOrderViewForm(-1, clientViewData,
                                                                new CarViewData(new Car(), new Person(), new Mark()), "", new List <MalfunctionViewForm>())));
        }
 public async Task PutClient(int id, ClientViewData client)
 {
     if (id != client.Id)
     {
         throw new Exception("");
     }
     await _process.ChangeClient(client);
 }
 public RepairOrderViewForm(int id, ClientViewData clientViewData, CarViewData carViewData, string worker, List <MalfunctionViewForm> malfunctionViewModels)
 {
     Id                    = id;
     ClientViewData        = clientViewData;
     CarViewData           = carViewData;
     Worker                = worker;
     MalfunctionViewModels = malfunctionViewModels;
 }
Example #4
0
        // добавить нового клиента
        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();
        }
Example #5
0
        // изменение данных клиента
        public async Task ChangeClient(ClientViewData clientViewData)
        {
            // получаем клиента для изменения
            Client client = _context.Clients.First(c => c.Id == clientViewData.Id);

            if (client == null)
            {
                throw new WebApiException("Клиента не был найден");
            }

            // создание человека
            Person person = new Person {
                Surname    = clientViewData.Surname,
                Name       = clientViewData.Name,
                Patronymic = clientViewData.Patronymic,
                Passport   = clientViewData.Passport
            };
            // изменение данных персоны
            await _personProcess.ChangePerson(person);

            Address address = new Address {
                Street   = clientViewData.Street,
                Building = clientViewData.Building,
                Flat     = clientViewData.Flat
            };

            // добавление нового адреса
            // тут на самом деле очень спорный момент что именно нам делать,
            // менять адрес или добавлять его
            // с одной стороны адрес может измениться только потому что у клиента изменилось место жительство
            // с другой стороны может быть была какая-то опечатка. Поэтому я поставлю добавление, так будет правильнее на мой взгляд
            if (!_context.Addresses.Any(a => a.Street == address.Street && a.Building == address.Building && a.Flat == address.Flat))
            {
                await AppendAddress(address);
            }

            client.TelephoneNumber = clientViewData.TelephoneNumber;

            var id = _context.Addresses.FirstOrDefault(a => a.Street == address.Street && a.Building == address.Building && a.Flat == address.Flat)?.Id;

            if (id != null)
            {
                client.AddressId = (int)id;
            }

            await _context.SaveChangesAsync();
        }
 public async Task PostClient(ClientViewData client) => await _process.AppendClient(client);