Ejemplo n.º 1
0
        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));
        }