Ejemplo n.º 1
0
        public IActionResult Put(int id, [FromBody] EmployeeModel employee)
        {
            UserCanAccessEmployee(id);

            if (employee == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(new ObjectResult(ModelState));
            }

            var employeeEntity = _schedulerContext.Employees
                                 .Include(e => e.Organization)
                                 .Include(e => e.Positions).ThenInclude(p => p.Position)
                                 .Single(o => o.EmployeeId == id);

            var availablePositions = _schedulerContext.Positions.Include(p => p.Organization)
                                     .Where(p => p.Organization.OrganizationId == employeeEntity.Organization.OrganizationId).ToList();

            var currentPositions = employeeEntity.Positions.Select(p => p.Position.PositionId);

            employee.Export(employeeEntity);

            foreach (Position position in availablePositions)
            {
                // see if the employee has position selected
                bool positionSelected        = employee.EmployeePositionIds.Contains(position.PositionId);
                bool positionAlreadyIncluded = currentPositions.Contains(position.PositionId);

                if (positionSelected && positionAlreadyIncluded)
                {
                }
                else if (positionSelected && !positionAlreadyIncluded)
                {
                    _schedulerContext.EmployeePositions.Add(new EmployeePosition {
                        Employee = employeeEntity, Position = position
                    });
                }
                else if (!positionSelected && positionAlreadyIncluded)
                {
                    var removePosition = employeeEntity.Positions.Single(ep => ep.Position.PositionId == position.PositionId);
                    _schedulerContext.EmployeePositions.Remove(removePosition);
                }
            }

            _schedulerContext.SaveChanges();

            return(new ObjectResult(employee));
        }
Ejemplo n.º 2
0
        public IActionResult Post(int id, [FromBody] EmployeeModel employee)
        {
            UserCanAccessOrganization(id);

            if (employee == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(new ObjectResult(ModelState));
            }

            var availablePositions = _schedulerContext.Positions.Include(p => p.Organization)
                                     .Where(p => p.Organization.OrganizationId == id).ToList();


            var organization   = _schedulerContext.Organizations.Single(o => o.OrganizationId == id);
            var employeeEntity = employee.Export();

            employeeEntity.Organization = organization;

            foreach (Position position in availablePositions)
            {
                if (employee.EmployeePositionIds.Contains(position.PositionId))
                {
                    _schedulerContext.EmployeePositions.Add(new EmployeePosition {
                        Employee = employeeEntity, Position = position
                    });
                }
            }

            _schedulerContext.Employees.Add(employeeEntity);
            _schedulerContext.SaveChanges();

            return(new ObjectResult(employee));
        }