public async Task <IHttpActionResult> PostEmployee(ViewModels.Employee dto) { // return Ok(client); if (dto == null) { return(Exceptions.getNullException(ModelState)); } if (!ModelState.IsValid) { // return BadRequest(ModelState); return(Exceptions.getModelValidationException(ModelState)); } var validate = unitOfWork.PersonRepository.Validate(dto); if (validate.Code != HttpStatusCode.OK) { return(validate); } /////////////////////////////////////// // if (dto.Person.VisaExpireDate!=null) // dto.Person.VisaExpireDate=((DateTime)dto.Person.VisaExpireDate).AddHours(3).AddMinutes(30); /////////////////////////////////////////// Person person = null; if (dto.PersonId != -1) { person = await unitOfWork.PersonRepository.GetPersonById(dto.PersonId); } else { person = await unitOfWork.PersonRepository.GetPersonByNID(dto.Person.NID); } if (person == null) { person = new Person(); person.DateCreate = DateTime.Now; unitOfWork.PersonRepository.Insert(person); } ViewModels.Person.Fill(person, dto.Person); PersonCustomer personCustomer = await unitOfWork.PersonRepository.GetPersonCustomer((int)dto.CustomerId, dto.Person.PersonId); if (personCustomer == null) { personCustomer = new PersonCustomer(); person.PersonCustomers.Add(personCustomer); } ViewModels.PersonCustomer.Fill(personCustomer, dto); Employee employee = await unitOfWork.PersonRepository.GetEmployee(personCustomer.Id); if (employee == null) { employee = new Employee(); } personCustomer.Employee = employee; ViewModels.Employee.Fill(employee, dto); unitOfWork.PersonRepository.FillEmployeeLocations(employee, dto); unitOfWork.PersonRepository.FillAircraftTypes(person, dto); unitOfWork.PersonRepository.FillDocuments(person, dto); unitOfWork.PersonRepository.FillEducations(person, dto); unitOfWork.PersonRepository.FillExps(person, dto); unitOfWork.PersonRepository.FillRatings(person, dto); var saveResult = await unitOfWork.SaveAsync(); if (saveResult.Code != HttpStatusCode.OK) { return(saveResult); } dto.Id = employee.Id; return(Ok(dto)); }