示例#1
0
        //[HttpGet("GetRequestAdoProjectAccess/{id}")]
        public async Task <ActionResult <AdoProjectAccessDto> > GetRequestAdoProjectAccess(int id)
        {
            if (id < 1)
            {
                return(BadRequest());
            }

            try
            {
                _logger.LogInformation(ApiLogEvents.GetItem, $"{nameof(GetRequestAdoProjectAccess)} with {id} Started");

                var repoObj = await _repository.GetId(id).ConfigureAwait(false);

                if (repoObj == null)
                {
                    return(NotFound());
                }

                //_mapper.Map(repoObj, result);
                var result = _mapper.Map <AdoProjectAccessDto>(repoObj);
                return(result);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, nameof(GetRequestAdoProjectAccess), id);
                return(StatusCode(StatusCodes.Status500InternalServerError, ex?.Message));
            }
        }
示例#2
0
        public async Task <List <AdoProjectAccess> > Handle(ApproveRejectAdoProjectAccessIdsCommand request, CancellationToken cancellationToken)
        {
            try
            {
                _adoProjectAccessRepository.DatabaseContext.ChangeTracker.Clear();

                List <AdoProjectAccess> created  = new();
                StringBuilder           warnings = new();
                if (request.IdsList.IsNullOrEmptyCollection())
                {
                    return(null);
                }

                AdoProjectAccess origEntity = null;
                foreach (var id in request.IdsList)
                {
                    try
                    {
                        origEntity = null;
                        origEntity = await _adoProjectAccessRepository.GetId(id);

                        if (request.Reject)
                        {
                            //2. Update Db
                            origEntity.Status = Status.Rejected;
                            created.Add(origEntity);
                        }
                        else
                        {
                            //1. create Proj
                            //var mapped = _mapper.Map<AdoModels.ProjectAdo>(origEntity);
                            var sec = await _projectAdoServices.AddUser(origEntity.Organization, origEntity.Name, origEntity.CreatedBy);

                            //2. Update Db
                            origEntity.Status = Status.Completed;
                            created.Add(origEntity);
                        }

                        _adoProjectAccessRepository.Update(origEntity, _userId);
                        if (await _adoProjectAccessRepository.SaveChangesAsync() && origEntity.Status == Status.Completed)
                        {
                            //3. create record in history DB
                            //await _adoProjectHistoryRepository.Create(origEntity.Id, IAdoProjectHistoryRepository.Operation_Request_Completed, request.UserId);

                            //4. Send email
                        }
                    }
                    catch (Exception ex)
                    {
                        warnings.Append($"Error approving Id: {origEntity?.Id}, {nameof(origEntity.Name)}: {origEntity?.Name}, {ex.Message}");
                    }
                }
                if (warnings.Length > 0)
                {
                    _logger.LogWarning($"{nameof(CreateApprovedAdoProjectIdsCommandHandler)} warnings to report: {warnings}");
                }

                return(created);
            }
            catch (Exception ex)
            {
                //this shouldn't stop the API from doing else so this can be logged
                _logger.LogError($"{nameof(CreateApprovedAdoProjectIdsCommandHandler)} failed due to: {ex.Message}");
            }
            return(null);
        }