/// <summary> /// Преобразование DTO сотрудника в бизнес модель /// </summary> /// <param name="e"></param> /// <returns></returns> public static BaseEmployee ToBaseEmployee(this Employee e) { var position = e.Positions; BaseEmployee employee = default; switch (position) { case Positions.None: break; case Positions.Director: employee = new DirectorEmployee(e.Id, e.NamePerson, e.SurnamePerson, e.Department, e.BaseSalary); break; case Positions.Developer: employee = new StaffEmployee(e.Id, e.NamePerson, e.SurnamePerson, e.Department, e.BaseSalary); break; case Positions.Freelance: employee = new FreeLancerEmployee(e.Id, e.NamePerson, e.SurnamePerson, e.Department, e.BaseSalary); break; default: break; } return(employee); }
/// <summary> /// Получить асинхронно список всех сотрудников /// </summary> /// <returns></returns> public async Task <IEnumerable <BaseEmployee> > GetEmployeesListAsync() { //Создаем новый список сотрудников List <BaseEmployee> result = new List <BaseEmployee>(); //Считываем все строки из файла в текстовый массив string[] dataLines = await base.ReadAsync(); foreach (var line in dataLines) { //Получаем модель сотрудника в виде текстового массива string[] model = line.Split(DataSearator); //Преобразуем данные массива Guid.TryParse(model[0], out Guid id); string name = model[1]; string surnamePerson = model[2]; var department = (Departments)Enum.Parse(typeof(Departments), model[3]); var position = (Positions)Enum.Parse(typeof(Positions), model[4]); decimal.TryParse(model[5], out decimal salary); //Создаем нового сотрудника и в зависимости от позиции создаем тип сотрудника BaseEmployee employee = null; switch (position) { case Positions.None: employee = new StaffEmployee(id, name, surnamePerson, department, position, salary); break; case Positions.Developer: employee = new StaffEmployee(id, name, surnamePerson, department, salary); break; case Positions.Director: employee = new DirectorEmployee(id, name, surnamePerson, department, salary); break; case Positions.Freelance: employee = new FreeLancerEmployee(id, name, surnamePerson, department, salary); break; default: break; } //Если сотрудник создан, добавляем его в результирующий список if (employee != null) { result.Add(employee); } } //Если результирующий список пустой, возвращаем null if (result.Count == 0) { return(null); } return(result); }
public void E_GetEmployeeReportByStaffEmployee_ReturnNull(string _id, string name, string surname, Departments department, decimal baseSalary, Positions position) { var freelancerID = Guid.Parse("345f97a8-288c-4533-b976-b13d3c75188f"); var id = Guid.Parse(_id); var _autorize = new AutorizeToken(Role.Freelancer, freelancerID); #region TestSetup //Настройка MOCK депозитария ICompletedTaskLogsService _serviceCompletedTaskLogs; ISalaryReportService _salaryReportService; IEmployeeService _employeeService; Mock <ICompletedTasksLogRepository> _repositoryCompletedTaskLog; _repositoryCompletedTaskLog = new Mock <ICompletedTasksLogRepository>(); _repositoryCompletedTaskLog .Setup(method => method.GetCompletedTasksListByEmployeeAsync(id, DateTime.Now.Date.AddDays(-5), DateTime.Now.Date)) .ReturnsAsync(() => new List <CompletedTaskLog> { new CompletedTaskLog(Guid.NewGuid(), id, DateTime.Now.Date.AddDays(-5), 5, "TestTask4"), new CompletedTaskLog(Guid.NewGuid(), id, DateTime.Now.Date.AddDays(-5), 3, "TestTask5"), new CompletedTaskLog(Guid.NewGuid(), id, DateTime.Now.Date.AddDays(-3), 9, "TestTask5"), new CompletedTaskLog(Guid.NewGuid(), id, DateTime.Now.Date.AddDays(-2), 3, "TestTask6"), }) .Verifiable(); var idEmp1 = Guid.Parse("345f97a8-287c-4533-b976-b13d3c75188f"); Mock <IEmployeeRepository> _repositoryEmployee; _repositoryEmployee = new Mock <IEmployeeRepository>(); _repositoryEmployee .Setup(method => method.GetEmployeeByIdAsync(idEmp1)) .ReturnsAsync(new DirectorEmployee(idEmp1, name, surname, department, baseSalary)); //Настройка сервисов _serviceCompletedTaskLogs = new CompletedTasksLogsService(_repositoryCompletedTaskLog.Object, _autorize); _employeeService = new EmployeeService(_repositoryEmployee.Object, _autorize); _salaryReportService = new SalaryReportService(_serviceCompletedTaskLogs, _employeeService); //Настройка сотрудника BaseEmployee employee = null; switch (position) { case Positions.None: break; case Positions.Director: employee = new DirectorEmployee(id, name, surname, department, baseSalary); break; case Positions.Developer: employee = new StaffEmployee(id, name, surname, department, baseSalary); break; case Positions.Freelance: employee = new FreeLancerEmployee(id, name, surname, department, baseSalary); break; default: break; } #endregion DateTime firstDay = DateTime.Now.Date.AddDays(-5); DateTime lastDay = DateTime.Now.Date; var result = _salaryReportService.GetEmployeeSalaryReport(employee, (firstDay, lastDay)).Result; Assert.IsNull(result); }