Exemple #1
0
        public async Task <ActionResult <ProjectAdo> > SaveDraftAdoProject(ProjectAdo dto)
        {
            if (dto == null)
            {
                return(BadRequest());
            }

            try
            {
                _logger.LogInformation(ApiLogEvents.RequestItem, $"{nameof(SaveDraftAdoProject)} Started");

                var repoObj = _mapper.Map <Entity.AdoProject>(dto);
                _repository.Add(repoObj);
                var suc = await _repository.SaveChangesAsync();

                if (suc)
                {
                    var result = _mapper.Map <ProjectAdo>(repoObj);
                    return(CreatedAtRoute(nameof(GetRequestAdoProject),
                                          new { id = result.Id }, result));
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, nameof(SaveDraftAdoProject), dto);
                return(StatusCode(StatusCodes.Status500InternalServerError, ex?.Message));
            }
        }
Exemple #2
0
        public async Task <ProjectAdo> UpdateItemAsync(ProjectAdo item)
        {
            try
            {
                await base.AddAuthHeaderAsync();

                var url = $"{ApiPart}";
                //var add = Mapper.Map<ProjectAdo>(item);
                var httpcontent = new StringContent(JsonSerializer.Serialize(item, _options), Encoding.UTF8, "application/json");
                var apiData     = await HttpClientBase.PutAsync(url, httpcontent).ConfigureAwait(false);

                if (apiData.IsSuccessStatusCode)
                {
                    var content = await apiData.Content.ReadAsStringAsync();

                    var ser = JsonSerializer.Deserialize <ProjectAdo>(content, _options);
                    return(ser);
                }
                else
                {
                    throw new Exception(base.GetErrorText(apiData));
                }
            }
            catch (Exception ex)
            {
                base.HandleException(ex);
                throw;
            }
            //return false;
        }
Exemple #3
0
        //public Task OnOrganizationChanged(string value)
        //{
        //    if (value != null)
        //        Model.Organization = value;

        //    return Task.CompletedTask;
        //}

        //public Task OnProcessNameChanged(string value)
        //{
        //    if (value != null)
        //        Model.ProcessName = value;

        //    return Task.CompletedTask;
        //}

        public async Task OnValidSubmit(EditContext context)
        {
            ShowProcessing();
            var valid = context.Validate();

            if (valid)
            {
                try
                {
                    await Task.Delay(1 * 1000); // todo fix workaround

                    valid = context.Validate();

                    if (valid && OperationTypeTicket == OperatioType.Create)
                    {
                        Model.Status = AdoModels.Status.Submitted;
                        var added = await AdoProjectDataService.AddItemAsync(Model);

                        if (added != null)
                        {
                            Success = true;
                            Model   = added;
                        }
                    }
                    else if (valid && OperationTypeTicket == OperatioType.Edit)
                    {
                        var updated = await AdoProjectDataService.UpdateItemAsync(Model);

                        if (updated != null)
                        {
                            await CsroDialogService.ShowMessage("Success", $"Update Finished", "Refresh");
                            await Load();
                        }
                        else
                        {
                            var ok = await CsroDialogService.ShowWarning("Update Error", $"Conflic Detected, Please refresh and try again", "Refresh");

                            if (ok)
                            {
                                await Load();
                            }
                        }
                    }
                    StateHasChanged();
                }
                catch (Exception ex)
                {
                    Logger.LogErrorCsro(ex);
                    await CsroDialogService.ShowError("Error", $"Detail error: {ex.Message}");
                }
            }
            HideLoading();
        }
Exemple #4
0
        public async Task <ActionResult <ProjectAdo> > UpdateAdoProjectRequest(ProjectAdo dto)
        {
            if (dto == null || dto.Id < 1)
            {
                return(BadRequest());
            }

            if (dto.Status > Status.Submitted)
            {
                return(BadRequest($"Can not Modify request if {nameof(dto.Status)} is {dto.Status}. Please Create new request."));
            }

            try
            {
                _logger.LogInformation(ApiLogEvents.UpdateItem, $"{nameof(UpdateAdoProjectRequest)} Started");

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

                if (repoObj == null)
                {
                    _logger.LogWarning(ApiLogEvents.UpdateItemNotFound, $"{nameof(UpdateAdoProjectRequest)} not found");
                    return(NotFound());
                }

                repoObj = _mapper.Map <Entity.AdoProject>(dto);
                var res = await _repository.UpdateAsync(repoObj).ConfigureAwait(false);

                if (res != null)
                {
                    return(NoContent());
                }
                else
                {
                    return(Conflict("Conflict detected, refresh and try again."));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, nameof(UpdateAdoProjectRequest), dto);
                return(StatusCode(StatusCodes.Status500InternalServerError, ex?.Message));
            }
        }
Exemple #5
0
        public async Task <ProjectAdo> AddItemAsync(ProjectAdo item)
        {
            try
            {
                await base.AddAuthHeaderAsync();

                string url = null;
                if (item.Status == Common.AdoServices.Models.Status.Draft)
                {
                    url = $"{ApiPart}SaveDraftAdoProject";
                }
                else
                {
                    url = $"{ApiPart}RequestAdoProject";
                }
                //var url = $"{ApiPart}";
                var httpcontent = new StringContent(JsonSerializer.Serialize(item, _options), Encoding.UTF8, "application/json");
                var apiData     = await HttpClientBase.PostAsync(url, httpcontent).ConfigureAwait(false);

                //HttpResponseMessage
                if (apiData.IsSuccessStatusCode)
                {
                    var content = await apiData.Content.ReadAsStringAsync();

                    var ser = JsonSerializer.Deserialize <ProjectAdo>(content, _options);
                    return(ser);
                    //var result = Mapper.Map<ProjectAdo>(ser);
                    //return result;
                }
                else
                {
                    throw new Exception(GetErrorText(apiData));
                }
            }
            catch (Exception ex)
            {
                base.HandleException(ex);
                throw;
            }
        }
Exemple #6
0
        private async Task Load()
        {
            try
            {
                ShowLoading();

                var prs = await ProcessAdoServices.GetAdoProcessesName(null);

                Processes.Clear();
                if (prs != null)
                {
                    Processes = prs;
                }

                var orgs = await ProcessAdoServices.GetOrganizationNames();

                Organizations.Clear();
                if (orgs != null)
                {
                    Organizations = orgs;
                }

                if (OperationTypeTicket != OperatioType.Create)
                {
                    Model.Id = int.Parse(RequestId);
                    var server = await AdoProjectDataService.GetItemByIdAsync(Model.Id);

                    if (server != null)
                    {
                        Model = server;
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.LogErrorCsro(ex);
            }
            HideLoading();
        }
Exemple #7
0
        public async Task <ProjectAdo> CreateProject(ProjectAdo projectAdoCreate)
        {
            VssConnection connection = null;
            ProjectAdo    result     = null;

            try
            {
                string projectName        = projectAdoCreate.Name;
                string projectDescription = projectAdoCreate.Description;
                string processName        = projectAdoCreate.ProcessName ?? "Agile";
                var    organization       = projectAdoCreate.Organization;
                string url = $"https://dev.azure.com/{organization}";

                // Setup version control properties
                Dictionary <string, string> versionControlProperties = new();
                versionControlProperties[TeamProjectCapabilitiesConstants.VersionControlCapabilityAttributeName] =
                    SourceControlTypes.Git.ToString();

                if (_adoConfig.UsePta)
                {
                    connection = new VssConnection(new Uri(url), new VssBasicCredential(string.Empty, _adoConfig.AdoPersonalAccessToken));
                }
                else
                {
                    //connection = new VssConnection(new Uri(url), new VssCredentials(true));
                    connection = new VssConnection(new Uri(url), new VssClientCredentials(true));
                }

                //var scope = "vso.project_manage";
                //var token = await _tokenAcquisition.GetAccessTokenForAppAsync(scope);
                //var accessTokenCredential = new VssOAuthAccessTokenCredential(token);
                //connection = new VssConnection(new Uri(url), accessTokenCredential);

                // Setup process properties
                Guid?processId = null;
                var  process   = await _processAdoServices.GetAdoProcesByName(organization, processName);

                processId = process?.Id;

                Dictionary <string, string> processProperaties = new();
                processProperaties[TeamProjectCapabilitiesConstants.ProcessTemplateCapabilityTemplateTypeIdAttributeName] =
                    processId.ToString();

                // Construct capabilities dictionary
                Dictionary <string, Dictionary <string, string> > capabilities = new();
                capabilities[TeamProjectCapabilitiesConstants.VersionControlCapabilityName] =
                    versionControlProperties;
                capabilities[TeamProjectCapabilitiesConstants.ProcessTemplateCapabilityName] =
                    processProperaties;

                // Construct object containing properties needed for creating the project
                TeamProject projectCreateParameters = new()
                {
                    Name         = projectName,
                    Description  = projectDescription + " 'Created via CSRO Web Portal'",
                    Capabilities = capabilities,
                    //State = ProjectState.CreatePending //only from UI
                };

                // Get a client
                ProjectHttpClient projectClient = connection.GetClient <ProjectHttpClient>();
                _logger?.LogDebug("Queuing project creation...");

                // Queue the project creation operation
                // This returns an operation object that can be used to check the status of the creation
                OperationReference operation = await projectClient.QueueCreateProject(projectCreateParameters).ConfigureAwait(false);

                //ClientSampleHttpLogger.SetSuppressOutput(Context, true);

                // Check the operation status every 5 seconds (for up to 30 seconds)
                Operation completedOperation = await WaitForLongRunningOperation(connection, operation.Id, 2, 30).ConfigureAwait(false);

                // Check if the operation succeeded (the project was created) or failed
                if (completedOperation.Status == OperationStatus.Succeeded)
                {
                    // Get the full details about the newly created project
                    var project = await projectClient.GetProject(
                        projectCreateParameters.Name,
                        includeCapabilities : true,
                        includeHistory : true);

                    _logger?.LogDebug("Project created (ID: {0})", project.Id);

                    result = _mapper.Map <ProjectAdo>(project);
                    result.Organization = organization;
                    result.ProcessName  = processName;

                    //original props
                    result.Id         = projectAdoCreate.Id;
                    result.RowVersion = projectAdoCreate.RowVersion;
                    result.CreatedAt  = projectAdoCreate.CreatedAt;
                    result.CreatedBy  = projectAdoCreate.CreatedBy;
                    result.ModifiedAt = projectAdoCreate.ModifiedAt;
                    result.ModifiedBy = projectAdoCreate.ModifiedBy;
                    result.IsDeleted  = projectAdoCreate.IsDeleted;

                    //projectAdoCreate.Description = project.Description;
                    //projectAdoCreate.AdoId = project.Id;
                    //projectAdoCreate.Url = project.Url;
                    //projectAdoCreate.State = project.State;
                    //projectAdoCreate.Visibility = project.Visibility;
                    //return projectAdoCreate;
                }
                else
                {
                    _logger?.LogError("Project creation operation failed: " + completedOperation.ResultMessage);
                }
            }
            catch (Exception ex)
            {
                //Console.WriteLine("Exception during create project: ", ex.Message);
                throw;
            }
            finally
            {
                connection?.Dispose();
            }
            return(result);
        }