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))); }
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; } }