// оформление новой заявки вместе с использованием заявки оставленной человеком 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; }
// добавить нового клиента 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(); }
// изменение данных клиента 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);