private async Task <EmployeeCreateResult> Create(EmployeeCreateParameters parameters) { var validationResult = await Validate(0, parameters); var department = await _dbContext.Departments.Include(e => e.Manager) .FirstOrDefaultAsync(d => d.Id == parameters.DepartmentId); if (validationResult != EmployeeValidationStatus.Success) { return(new EmployeeCreateResult { Status = validationResult }); } var result = await _dbContext.Employees.AddAsync(new Employee() { Name = parameters.Name, PhoneNumber = parameters.PhoneNumber, Email = parameters.Email, Password = parameters.Password, JobTitle = parameters.JobTitle, Department = department, }); await _dbContext.SaveChangesAsync(); var employee = result.Entity; if (department == null) { return(new EmployeeCreateResult(EmployeeValidationStatus.Success) { Data = new EmployeeViewResult { Id = employee.Id, Name = employee.Name, PhoneNumber = parameters.PhoneNumber, Email = parameters.Email, JobTitle = parameters.JobTitle, } }); } else { return(new EmployeeCreateResult(EmployeeValidationStatus.Success) { Data = new EmployeeViewResult { Id = employee.Id, Name = employee.Name, PhoneNumber = parameters.PhoneNumber, Email = parameters.Email, JobTitle = parameters.JobTitle, DepartmentName = department?.Name, ManagerName = department.Manager?.Name } }); } }
private async Task <EmployeeValidationStatus> Validate(int id, EmployeeCreateParameters parameters) { var findEmail = await _dbContext.Employees.AnyAsync(e => (id == 0 || e.Id != id) && e.Email.ToLower().Equals(parameters.Email.ToLower())); if (findEmail) { return(EmployeeValidationStatus.EmailAlreadyExists); } else { return(EmployeeValidationStatus.Success); } }
public async Task <EmployeeUpdateResult> Put(int id, EmployeeCreateParameters parameters)//change parameters type { return(await _employeeService.Update(id, parameters)); }
public async Task <EmployeeCreateResult> Post(EmployeeCreateParameters parameters) { return(await _employeeService.Register(parameters)); }
public async Task <EmployeeCreateResult> Register(EmployeeCreateParameters parameters) { parameters.Password = _protectionService.ComputeHash(parameters.Password); return(await Create(parameters)); }
public async Task <EmployeeUpdateResult> Update(int id, EmployeeCreateParameters parameters) { var validationResult = await Validate(id, parameters); if (validationResult != EmployeeValidationStatus.Success) { return(new EmployeeUpdateResult { Status = validationResult }); } var employee = await _dbContext.Employees .Include(d => d.Department) .Include(d => d.Department.Manager) .FirstOrDefaultAsync(e => e.Id == id); var department = await _dbContext.Departments.Include(d => d.Manager).FirstOrDefaultAsync(d => d.Id == parameters.DepartmentId); if (department == null) { employee.Name = parameters.Name; employee.PhoneNumber = parameters.PhoneNumber; employee.Email = parameters.Email; employee.Password = parameters.Password; employee.JobTitle = parameters.JobTitle; await _dbContext.SaveChangesAsync(); return(new EmployeeUpdateResult { Status = EmployeeValidationStatus.Success, Data = new EmployeeViewResult { Id = employee.Id, Name = employee.Name, PhoneNumber = employee.PhoneNumber, Email = employee.Email, JobTitle = employee.JobTitle, DepartmentName = employee.Department?.Name, ManagerName = employee.Department?.Manager?.Name } }); } else { employee.Name = parameters.Name; employee.PhoneNumber = parameters.PhoneNumber; employee.Email = parameters.Email; employee.Password = parameters.Password; employee.JobTitle = parameters.JobTitle; employee.Department = department; await _dbContext.SaveChangesAsync(); return(new EmployeeUpdateResult { Status = EmployeeValidationStatus.Success, Data = new EmployeeViewResult { Id = employee.Id, Name = employee.Name, PhoneNumber = employee.PhoneNumber, Email = employee.Email, JobTitle = employee.JobTitle, DepartmentName = department.Name, ManagerName = department.Manager?.Name } }); } }