Beispiel #1
0
        public async Task <IActionResult> ConfirmResource([FromRoute] int openingId)
        {
            if (openingId == 0)
            {
                var error = new BadRequestException($"The given opening {openingId} is invalid");
                return(StatusCode(StatusCodes.Status400BadRequest, new CustomException <BadRequestException>(error).GetException()));
            }
            try
            {
                Position position = await positionsRepository.GetAPosition(openingId);

                if (position == null)
                {
                    var error = new NotFoundException($"Invalid positionId {openingId}.");
                    return(StatusCode(StatusCodes.Status404NotFound, new CustomException <NotFoundException>(error).GetException()));
                }

                if (position.ResourceId == null || position.ResourceId == "")
                {
                    var error = new BadRequestException($"Position {position.Id} does not have a resource assigned.");
                    return(StatusCode(StatusCodes.Status400BadRequest, new CustomException <BadRequestException>(error).GetException()));
                }

                position.IsConfirmed = true;
                var updatedPosition = await positionsRepository.UpdateAPosition(position);

                IEnumerable <Position> positionsOfUser = await positionsRepository.GetAllPositionsOfUser(position.ResourceId);

                IEnumerable <OutOfOffice> outOfOfficesOfUser = await outOfOfficeRepository.GetAllOutOfOfficeForUser(position.ResourceId);

                var utilization = await utilizationRepository.CalculateUtilizationOfUser(positionsOfUser, outOfOfficesOfUser);

                await usersRepository.UpdateUtilizationOfUser(utilization, position.ResourceId);

                RequestProjectAssign response = new RequestProjectAssign
                {
                    OpeningId            = openingId,
                    UserID               = position.ResourceId,
                    ConfirmedUtilization = utilization
                };
                return(StatusCode(StatusCodes.Status200OK, response));
            }
            catch (Exception err)
            {
                var errMessage = $"Source: {err.Source}\n  Message: {err.Message}\n  StackTrace: {err.StackTrace}\n";
                if (err is SqlException)
                {
                    var error = new InternalServerException(errMessage);
                    return(StatusCode(StatusCodes.Status500InternalServerError, new CustomException <InternalServerException>(error).GetException()));
                }
                else
                {
                    var error = new BadRequestException(errMessage);
                    return(StatusCode(StatusCodes.Status400BadRequest, new CustomException <BadRequestException>(error).GetException()));
                }
            }
        }
Beispiel #2
0
        public async Task <IActionResult> AssignAResource([FromRoute] int openingId, string userId)
        {
            try
            {
                if (openingId == 0)
                {
                    var error = new BadRequestException($"The given opening {openingId} is invalid");
                    return(StatusCode(StatusCodes.Status400BadRequest, new CustomException <BadRequestException>(error).GetException()));
                }

                if (String.IsNullOrEmpty(userId))
                {
                    var error = new BadRequestException("The given user is invalid");
                    return(StatusCode(StatusCodes.Status400BadRequest, new CustomException <BadRequestException>(error).GetException()));
                }

                Position position = await positionsRepository.GetAPosition(openingId);

                User user = await usersRepository.GetAUser(userId);

                if (position == null)
                {
                    var error = new NotFoundException($"Invalid positionId {openingId}.");
                    return(StatusCode(StatusCodes.Status404NotFound, new CustomException <NotFoundException>(error).GetException()));
                }
                if (user == null)
                {
                    var error = new NotFoundException($"Resource with id {userId} not found.");
                    return(StatusCode(StatusCodes.Status404NotFound, new CustomException <NotFoundException>(error).GetException()));
                }

                // Log.Information("{@response}", position);

                position.ResourceId  = userId;
                position.IsConfirmed = false;
                var updatedPosition = await positionsRepository.UpdateAPosition(position);



                RequestProjectAssign response = new RequestProjectAssign
                {
                    OpeningId            = openingId,
                    UserID               = userId,
                    ConfirmedUtilization = user.Utilization
                };

                // Log.Information("{@response}", response);
                return(StatusCode(StatusCodes.Status200OK, response));
            }
            catch (Exception err)
            {
                var errMessage = $"Source: {err.Source}\n  Message: {err.Message}\n  StackTrace: {err.StackTrace}\n";
                if (err is SqlException)
                {
                    var error = new InternalServerException(errMessage);
                    return(StatusCode(StatusCodes.Status500InternalServerError, new CustomException <InternalServerException>(error).GetException()));
                }
                else
                {
                    var error = new BadRequestException(errMessage);
                    return(StatusCode(StatusCodes.Status400BadRequest, new CustomException <BadRequestException>(error).GetException()));
                }
            }
        }