示例#1
0
        public async Task <IActionResult> Post([FromBody] EmployeeRequestDTO model)
        {
            var response = new EmployeeResponse()
            {
                Result = null
            };

            try
            {
                if (model == null)
                {
                    response.Messages = ResponseMessages.BadRequest();
                    return(NotFound(response));
                }

                var res = new EmployeeValidator();
                if (!ModelState.IsValid)
                {
                    response.Messages = ResponseMessages.ModelValidate(ModelState);
                    return(UnprocessableEntity(response));
                }

                var result = await _employeeService.AddEmployee(model);

                response.Messages = ResponseMessages.Created();
                response.Result   = result;
                return(CreatedAtRoute("GetEmployees",
                                      new { id = result.EmployeeId },
                                      response));
            }
            catch (Exception exception)
            {
                response.Messages = ResponseMessages.InternalServerError(exception.ToString());
                return(StatusCode(500, response));
            }
        }
 public async Task PostEmployee(EmployeeRequestDTO employeeRequest)
 {
     await mediator.Send(new AddEmployeeCommand(
                             new Employee(employeeRequest.Name, employeeRequest.LastName)));
 }
示例#3
0
        public async Task <EmployeeResponseDTO> AddEmployee(EmployeeRequestDTO model)
        {
            try
            {
                using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
                {
                    var employee = new Employee()
                    {
                        Code          = ((_unitOfWork.Employee.TotalEmployees() + 1).ToString()).PadLeft(4, '0'),
                        FirstName     = model.FirstName,
                        LastName      = model.LastName,
                        MiddleName    = model.MiddleName,
                        DateOfBirth   = model.DateOfBirth,
                        Description   = model.Description,
                        FatherName    = model.FatherName,
                        FaxNo         = model.FaxNo,
                        MaritalStatus = model.MaritalStatus,
                        Gender        = model.Gender,
                        Remarks       = model.Remarks,
                        DepartmentId  = model.DepartmentId,
                        IsActive      = true,
                        Picture       = model.Picture,
                        CreatedBy     = Guid.NewGuid().ToString(),
                        CreatedDate   = DateTime.Now
                    };

                    using (_unitOfWork)
                    {
                        await _unitOfWork.Employee.AddAsync(employee);

                        await _unitOfWork.SaveChangesAsync();

                        var addressModel = model.Address.Select(address => new Address
                        {
                            StreetAddress = address.StreetAddress,
                            CityId        = address.CityId,
                            CountryId     = address.CountryId,
                            EmployeeId    = employee.EmployeeId
                        }).ToList();
                        await _unitOfWork.Address.AddAsync(addressModel);

                        var emailModel = model.Email.Select(email => new Email
                        {
                            EmployeeId   = employee.EmployeeId,
                            EmailAddress = email.EmailAddress,
                            Type         = email.Type
                        }).ToList();
                        await _unitOfWork.Email.AddAsync(emailModel);

                        var phoneModel = model.Phone.Select(phone => new Phone
                        {
                            EmployeeId  = employee.EmployeeId,
                            Type        = phone.Type,
                            PhoneNumber = phone.PhoneNumber
                        }).ToList();
                        await _unitOfWork.Phone.AddAsync(phoneModel);

                        await _unitOfWork.SaveChangesAsync();
                    }
                    scope.Complete();
                    return
                        (_mapper.Map <Employee, EmployeeResponseDTO>
                             (employee));
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
                throw;
            }
        }