Exemplo n.º 1
0
        public async Task <DepartmentCreateResult> Create(DepartmentCreateParameters parameters)
        {
            var validationResult = await Validate(0, parameters);

            var manager = await _dbContext.Employees.FindAsync(parameters.ManagerId);

            if (validationResult != DepartmentValidationStatus.Success)
            {
                return(new DepartmentCreateResult
                {
                    Status = validationResult
                });
            }
            var result = await _dbContext.Departments.AddAsync(new Department()
            {
                Employees = new List <Employee>(),
                Manager   = manager,
                Name      = parameters.Name,
            });

            await _dbContext.SaveChangesAsync();

            var department = result.Entity;

            if (manager == null)
            {
                return(new DepartmentCreateResult
                {
                    Data = new DepartmentViewResult
                    {
                        Id = department.Id,
                        Name = department.Name,
                    }
                });
            }
            else
            {
                return(new DepartmentCreateResult
                {
                    Data = new DepartmentViewResult
                    {
                        Id = department.Id,
                        Name = department.Name,
                        ManagerName = manager.Name
                    }
                });
            }
        }
Exemplo n.º 2
0
        public async Task <DepartmentUpdateResult> Update(int id, DepartmentCreateParameters parameters)
        {
            var validationResult = await Validate(id, parameters);

            if (validationResult != DepartmentValidationStatus.Success)
            {
                return(new DepartmentUpdateResult(validationResult));
            }


            var department = await _dbContext.Departments
                             .Include(d => d.Manager)
                             .FirstOrDefaultAsync(d => d.Id == id);


            if (department == null)
            {
                return(null);
            }


            if (!string.IsNullOrWhiteSpace(parameters.Name))
            {
                department.Name = parameters.Name;
            }

            if (parameters.ManagerId.HasValue)
            {
                var manager = await _dbContext.Employees.FirstOrDefaultAsync(e => e.Id == parameters.ManagerId.Value);

                if (manager != null)
                {
                    department.Manager   = manager;
                    department.ManagerId = department.ManagerId;
                }
            }

            await _dbContext.SaveChangesAsync();

            return(new DepartmentUpdateResult(DepartmentValidationStatus.Success)
            {
                Id = department.Id,
                Name = department.Name,
                ManagerName = department.Manager?.Name
            });
        }
Exemplo n.º 3
0
        private async Task <DepartmentValidationStatus> Validate(int id, DepartmentCreateParameters parameters)
        {
            var findName = await _dbContext.Departments.AnyAsync(d => (id == 0 || d.Id != id) && d.Name.ToLower().Equals(parameters.Name.ToLower()));

            var findManager = await _dbContext.Departments.FirstOrDefaultAsync(d => d.ManagerId.Equals(parameters.ManagerId));

            if (findName)
            {
                return(DepartmentValidationStatus.DepartmentNameAlreadyExists);
            }
            else if (findManager != null && findManager.ManagerId == parameters.ManagerId)
            {
                return(DepartmentValidationStatus.DepartmentManagerAlreadyExists);
            }
            else
            {
                return(DepartmentValidationStatus.Success);
            }
        }
Exemplo n.º 4
0
 public async Task <DepartmentUpdateResult> Put(int id, DepartmentCreateParameters parameters)
 {
     return(await _departmentService.Update(id, parameters));
 }
Exemplo n.º 5
0
 public async Task <DepartmentCreateResult> Post(DepartmentCreateParameters parameters)
 {
     return(await _departmentService.Create(parameters));
 }