public IActionResult JoinProjectWithVulnerability([FromBody] JoinProjectViewModel model) { try { var token = Request.Headers["Authorization"].ToString().Replace("Bearer ", ""); var handler = new JwtSecurityTokenHandler(); model.UserId = Guid.Parse(handler.ReadJwtToken(token).Claims.ToList().Find(x => x.Type.Contains("nameidentifier")).Value); return(Ok(new ResultResponseViewModel <List <string> >() { IsSuccess = true, Message = "Vinculação criada com sucesso.", Response = this._projectService.JoinProjectWithVulnerability(model).ToList() })); } catch (Exception e) { return(Ok(new ResultResponseViewModel <string>() { IsSuccess = false, Message = e.Message, Response = string.Empty })); } }
public IEnumerable <string> JoinProjectWithVulnerability(JoinProjectViewModel model) { using (var uow = new UnitOfWork(ConnectionString)) { var lstDuplicates = new List <string>(); //Lista dos ambientes inseridos, será //utilizado para criação das MIDIAS enviadas var listOfProjectVulnerabilities = new List <Guid>(); //Lista dos arquivos criados durante a //vinculação dos projetos x vulnerabilidades var listOfFiles = new List <Guid>(); //Insere cada ambiente inserido, gerando seu ID foreach (var environment in model.ListOfUris) { //Verifica se o ambiente enviado (IP ou URL), //o Projeto //e a Vulnerabilidade já estão vinculados if (uow._projectVultR.Any(x => x.ProjectId.Equals(model.ProjectId) && x.VulnerabilityId.Equals(model.VulnerabilityId) && x.Environment.Equals(environment.Uri))) { lstDuplicates.Add(environment.Uri); continue; } var projectVulnerabilityId = Guid.NewGuid(); listOfProjectVulnerabilities.Add(projectVulnerabilityId); var methodProtocolId = uow._methodProtocolR .SingleOrDefault(x => x.Name.Equals(environment.Method)).Id; uow._projectVultR.Add(new ProjectVulnerabilityEntity { Id = projectVulnerabilityId, Status = Enums.ProjStatus.New, Environment = environment.Uri, Port = environment.Port, FiledOrCookieName = environment.FormCookie, Observation = string.Empty, ProjectId = model.ProjectId, VulnerabilityId = model.VulnerabilityId, MethodProtocolId = methodProtocolId, UserId = model.UserId }); } foreach (var media in model.ListOfFiles) { var mediaId = Guid.NewGuid(); listOfFiles.Add(mediaId); uow._mediaR.Add(new MediaEntity { Id = mediaId, Name = media.Name, Archive = media.Base64 }); } //Adiciona para cada item de projeto-vulnerabilidade, //todas as mídias enviadas this.JoinMediaWithProjectVulnerability(listOfProjectVulnerabilities, listOfFiles, uow); //Salva na base de dados todas insersões uow.Complete(); return(lstDuplicates); } }