Example #1
0
        public async Task <IBaseDTO> Update(IBaseDTO newDto)
        {
            EmployeeDTO newEmp = (EmployeeDTO)newDto;
            EmployeeDTO oldEmp = (EmployeeDTO)await _employeeRep.GetById(newDto.Id);

            if (oldEmp.DepartmentId != newEmp.DepartmentId)
            {
                if (newEmp.Probation)
                {
                    newDto.SetError("Нельзя переводить сотрудника на исп. сроке!");
                    return(newEmp);
                }
                var department = (CatalogDepartmentDTO)await _departmentRep.GetById(newEmp.DepartmentId);

                if (department.IsFull() && newEmp.TransferHeadAssent == false)
                {
                    newDto.SetError("Нельзя переводить сотрудника в отдел с максимальным кол-ом сотрудников, без согласия руководства!");
                    return(newEmp);
                }
                EmployeeTransferDTO transfer = new EmployeeTransferDTO()
                {
                    Confirm        = true,
                    ConfirmDate    = DateTime.Now,
                    EmployeeId     = newEmp.Id,
                    ToDepartmentId = newEmp.DepartmentId
                };
                await _transferRep.Add(transfer);
            }
            return(await _employeeRep.Update(newDto));
        }
Example #2
0
        public async Task <IBaseDTO> Add(IBaseDTO dto)
        {
            EmployeeDTO newEmp = (EmployeeDTO)dto;

            if (newEmp.QualificationId > (int)QualificationNames.Инженер)
            {
                newEmp.SetError("Новый сотрудник не должен быть выше по квалификации, чем 'Инженер'.");
                return(newEmp);
            }
            if (newEmp.Probation == false)
            {
                newEmp.SetError("Новый сотрудник должен быть на испытательном сроке.");
                return(newEmp);
            }
            if (new int[] { 1, 2, 3 }.Contains(newEmp.ProbationDays) == false)
            {
                newEmp.SetError("У нового сотрудника должен быть задан исп. срок (1, 2 или 3 месяца)!");
                return(newEmp);
            }
            EmployeeTransferDTO transfer = new EmployeeTransferDTO()
            {
                Confirm        = true,
                ConfirmDate    = DateTime.Now,
                EmployeeId     = newEmp.Id,
                ToDepartmentId = newEmp.DepartmentId
            };
            await _transferRep.Add(transfer);

            return(await _employeeRep.Add(dto));
        }