init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
390
Kreta.BusinessLogic/Helpers/JiraHelper.cs
Normal file
390
Kreta.BusinessLogic/Helpers/JiraHelper.cs
Normal file
|
@ -0,0 +1,390 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using Kreta.BusinessLogic.HelperClasses.Ugyfelszolgalat;
|
||||
using Kreta.BusinessLogic.Interfaces;
|
||||
using Kreta.Client.Jira.Interface;
|
||||
using Kreta.Client.Jira.Model.Request;
|
||||
using Kreta.Client.Jira.Model.Response;
|
||||
using Kreta.Core.Enum;
|
||||
using Kreta.Core.Exceptions;
|
||||
using Kreta.Resources;
|
||||
|
||||
namespace Kreta.BusinessLogic.Helpers
|
||||
{
|
||||
internal class JiraHelper : IJiraHelper
|
||||
{
|
||||
private readonly IJiraClient JiraClient;
|
||||
public bool IsFileUploadEnabled { get; set; }
|
||||
|
||||
private const long MaxFileSizeMB = 4;
|
||||
private const long MaxFilesSizeMB = MaxFileSizeMB * 4;
|
||||
private static Dictionary<string, string> s_allowedFileTypes = new Dictionary<string, string>() {
|
||||
{ ".txt", "text/plain" },
|
||||
{ ".pdf", "application/pdf" },
|
||||
{ ".png", "image/png" },
|
||||
{ ".bmp", "image/bmp" },
|
||||
{ ".jpg", "image/jpeg" },
|
||||
{ ".jpeg", "image/jpeg" },
|
||||
{ ".xls", "application/vnd.ms-excel" },
|
||||
{ ".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" },
|
||||
{ ".doc", "application/msword" },
|
||||
{ ".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document" },
|
||||
{ ".xml", "text/xml" },
|
||||
{ ".roz", "application/roz" },
|
||||
{".rar", "application/octet-stream"},
|
||||
{".zip", "application/x-zip-compressed"}
|
||||
};
|
||||
|
||||
private long GetSizeInBytes(long sizeInMB)
|
||||
=> sizeInMB * (1024 * 1024);
|
||||
public int GetMaxFileSizeInBytes()
|
||||
=> (int)GetSizeInBytes(MaxFileSizeMB);
|
||||
public string[] GetAllowedFileExtensionArray()
|
||||
=> s_allowedFileTypes.Keys.ToArray();
|
||||
|
||||
public JiraHelper(IJiraClient jiraClient)
|
||||
{
|
||||
JiraClient = jiraClient ?? throw new ArgumentNullException(nameof(jiraClient));
|
||||
|
||||
IsFileUploadEnabled = jiraClient.IsFileUploadEnabled;
|
||||
}
|
||||
|
||||
private void AttachmentsValidation(long contentLength, string contentType, string fileName)
|
||||
{
|
||||
Match match = Regex.Match(fileName, @".*(\" + string.Join("|\\", GetAllowedFileExtensionArray()) + @")$", RegexOptions.IgnoreCase);
|
||||
if (match.Success)
|
||||
{
|
||||
var extension = match.Groups[1].Value.ToLower();
|
||||
if (!(s_allowedFileTypes.ContainsKey(extension) && s_allowedFileTypes[extension] == contentType))
|
||||
{
|
||||
throw new BlException(ErrorResource.AFajlKiterjeszteseVagyTipusaNemMegfelelo, BlExceptionType.JiraFileError);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new BlException(ErrorResource.AFajlKiterjeszteseVagyTipusaNemMegfelelo, BlExceptionType.JiraFileError);
|
||||
}
|
||||
|
||||
if (contentLength > GetSizeInBytes(MaxFileSizeMB))
|
||||
throw new BlException(string.Format(ErrorResource.HibaTortentXMBNalNemLehetNagyobbAFajlMerete, MaxFileSizeMB), BlExceptionType.JiraFileError);
|
||||
}
|
||||
|
||||
private List<File> CreateFileList(List<Csatolmany> csatolmanyArray)
|
||||
{
|
||||
var fileList = new List<File>();
|
||||
long alreadyAddedFilesSize = 0;
|
||||
|
||||
foreach (var csatolmanyFile in csatolmanyArray)
|
||||
{
|
||||
string contentType = string.Empty;
|
||||
int contentLength = 0;
|
||||
|
||||
File file = new File
|
||||
{
|
||||
FileName = csatolmanyFile.Name,
|
||||
Name = "file"
|
||||
};
|
||||
|
||||
string[] parts = csatolmanyFile.ContentAsBase64EncodedString.Split(new string[] { ";", ":", "," }, StringSplitOptions.None);
|
||||
if (parts.Length == 4)
|
||||
{
|
||||
file.ContentType = parts[1];
|
||||
file.Content = Convert.FromBase64String(parts[3]);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new BlException(ErrorResource.HibaTortentAFajlFeltolteseKozben, BlExceptionType.JiraFileError, new Exception(ErrorResource.ArgumentNumberErrorException));
|
||||
}
|
||||
contentLength = file.Content.Length;
|
||||
alreadyAddedFilesSize += contentLength;
|
||||
|
||||
AttachmentsValidation(contentLength, file.ContentType, file.FileName);
|
||||
file.ContentType = "application/octet-stream";
|
||||
|
||||
fileList.Add(file);
|
||||
}
|
||||
|
||||
if (GetSizeInBytes(MaxFilesSizeMB) < alreadyAddedFilesSize)
|
||||
{
|
||||
throw new BlException(string.Format(ErrorResource.HibaTortentACsatolmanyokEgyuttesMereteNemLehetNagyobbXMBNal, MaxFilesSizeMB), BlExceptionType.JiraFileError);
|
||||
}
|
||||
|
||||
return fileList;
|
||||
}
|
||||
|
||||
private string GetJiraPassword(string intezmenyAzonosito)
|
||||
{
|
||||
HashAlgorithm algorithm = SHA1.Create();
|
||||
byte[] hashBytes = algorithm.ComputeHash(Encoding.UTF8.GetBytes(intezmenyAzonosito));
|
||||
var hashString = new StringBuilder();
|
||||
|
||||
foreach (byte hashByte in hashBytes)
|
||||
{
|
||||
hashString.Append(hashByte.ToString("x2"));
|
||||
}
|
||||
|
||||
return hashString.ToString().Substring(0, 6);
|
||||
}
|
||||
|
||||
public string GetServiceDeskId(string intemzenyAzonosito)
|
||||
{
|
||||
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
|
||||
string response;
|
||||
|
||||
try
|
||||
{
|
||||
response = JiraClient.GetServiceDeskId();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new BlException(ex.Message);
|
||||
}
|
||||
|
||||
return !string.IsNullOrWhiteSpace(response) ? response : throw new BlException(ErrorResource.JiraHibasKeres);
|
||||
}
|
||||
|
||||
public (DataSet data, int dataTotalCount) GetBejelentesek(string intemzenyAzonosito, string requestType, string serviceDeskId, string requestStatus, string first, string limit)
|
||||
{
|
||||
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
|
||||
GetRequestsModel response;
|
||||
|
||||
try
|
||||
{
|
||||
response = JiraClient.GetBejelentesek(requestType, serviceDeskId, requestStatus, first, limit);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new BlException(ex.Message);
|
||||
}
|
||||
|
||||
var ds = new DataSet();
|
||||
var dt = ds.Tables.Add();
|
||||
dt.Columns.Add("ID", typeof(string));
|
||||
dt.Columns.Add("BejelentesTipus", typeof(string));
|
||||
dt.Columns.Add("Referencia", typeof(string));
|
||||
dt.Columns.Add("BejelentesCime", typeof(string));
|
||||
dt.Columns.Add("Status", typeof(string));
|
||||
dt.Columns.Add("BejelentesDatuma", typeof(DateTime));
|
||||
dt.Columns.Add("UtolsoFrissites", typeof(DateTime));
|
||||
|
||||
foreach (var item in response.values)
|
||||
{
|
||||
var row = dt.NewRow();
|
||||
var summary = item.RequestFieldValues.FirstOrDefault(a => a.fieldId == "summary");
|
||||
if (item.RequestType != null)
|
||||
{
|
||||
row["BejelentesTipus"] = item.RequestType.Name;
|
||||
}
|
||||
row["ID"] = item.IssueId;
|
||||
row["Referencia"] = item.IssueKey;
|
||||
if (summary != null)
|
||||
{
|
||||
row["BejelentesCime"] = summary.value;
|
||||
}
|
||||
row["Status"] = item.CurrentStatus.Status;
|
||||
row["BejelentesDatuma"] = item.CreatedDate.Iso8601;
|
||||
row["UtolsoFrissites"] = item.CurrentStatus.StatusDate.Iso8601;
|
||||
dt.Rows.Add(row);
|
||||
}
|
||||
|
||||
//TODO: jira lekérdezésben kéne megoldani
|
||||
ds.Tables[0]?.AsEnumerable().OrderByDescending(x => x["UtolsoFrissites"]);
|
||||
|
||||
return (ds, response.Size);
|
||||
}
|
||||
|
||||
public string CreateCommentToBejelentes(string intemzenyAzonosito, CreateBejelentesComment createBejelentesComment)
|
||||
{
|
||||
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
|
||||
//
|
||||
string response = string.Empty;
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(createBejelentesComment.Comment))
|
||||
{
|
||||
try
|
||||
{
|
||||
response = JiraClient.CreateCommentToBejelentes(createBejelentesComment.Id, createBejelentesComment);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new BlException(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
List<File> fileList = CreateFileList(createBejelentesComment.CsatolmanyArray);
|
||||
|
||||
try
|
||||
{
|
||||
var uploadedAttavments = JiraClient.UploadAttachments(fileList, GetServiceDeskId(intemzenyAzonosito));
|
||||
JiraClient.AddAttachmentsToIssue(uploadedAttavments, createBejelentesComment.Id);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new BlException(ex.Message);
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
public GetRequestModel CreateBejelentes(string intemzenyAzonosito, CreateBejelentes createBejelentes)
|
||||
{
|
||||
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
|
||||
|
||||
createBejelentes.ServiceDeskId = GetServiceDeskId(intemzenyAzonosito);
|
||||
GetRequestModel response;
|
||||
|
||||
try
|
||||
{
|
||||
response = JiraClient.CreateBejelentes(createBejelentes);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new BlException(ex.Message);
|
||||
}
|
||||
|
||||
if (createBejelentes.CsatolmanyArray != null && createBejelentes.CsatolmanyArray.Count > 0)
|
||||
{
|
||||
List<File> fileList = CreateFileList(createBejelentes.CsatolmanyArray);
|
||||
|
||||
try
|
||||
{
|
||||
var uploadedAttavments = JiraClient.UploadAttachments(fileList, GetServiceDeskId(intemzenyAzonosito));
|
||||
JiraClient.AddAttachmentsToIssue(uploadedAttavments, response.IssueId);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new BlException(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
public GetRequestModel CreateDbVisszaallitas(string intemzenyAzonosito, CreateDbVisszaallitas createDbVisszaallitas)
|
||||
{
|
||||
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
|
||||
createDbVisszaallitas.ServiceDeskId = GetServiceDeskId(intemzenyAzonosito);
|
||||
|
||||
try
|
||||
{
|
||||
return JiraClient.CreateBejelentes(createDbVisszaallitas);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new BlException(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public GetRequestModel CreateKonferenciaJelentkezes(string intemzenyAzonosito, CreateKonferenciaJelentkezes createKonferenciaJelentkezes)
|
||||
{
|
||||
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
|
||||
createKonferenciaJelentkezes.ServiceDeskId = GetServiceDeskId(intemzenyAzonosito);
|
||||
|
||||
try
|
||||
{
|
||||
return JiraClient.CreateBejelentes(createKonferenciaJelentkezes);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new BlException(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public GetRequestModel CreateUjUrlIgenyles(string intemzenyAzonosito, CreateUjUrlIgenyles createUjUrlIgenyles)
|
||||
{
|
||||
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
|
||||
createUjUrlIgenyles.ServiceDeskId = GetServiceDeskId(intemzenyAzonosito);
|
||||
|
||||
try
|
||||
{
|
||||
return JiraClient.CreateBejelentes(createUjUrlIgenyles);
|
||||
}
|
||||
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new BlException(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public List<RequestsComentValue> GetBejelentesCommentek(string intemzenyAzonosito, string id)
|
||||
{
|
||||
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
|
||||
List<RequestsComentValue> comments;
|
||||
|
||||
try
|
||||
{
|
||||
comments = JiraClient.GetBejelentesCommentek(id).Values;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new BlException(ex.Message);
|
||||
}
|
||||
|
||||
comments.Reverse();
|
||||
|
||||
return comments;
|
||||
}
|
||||
|
||||
public GetRequestTypeModel GetRequestTypes(string intemzenyAzonosito)
|
||||
{
|
||||
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
|
||||
string serviceDeskId = GetServiceDeskId(intemzenyAzonosito);
|
||||
|
||||
try
|
||||
{
|
||||
return JiraClient.GetRequestTypes(serviceDeskId);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new BlException(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public GetRequestModel GetBejelentes(string intemzenyAzonosito, string id)
|
||||
{
|
||||
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
|
||||
|
||||
try
|
||||
{
|
||||
return JiraClient.GetBejelentes(id);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new BlException(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public void ChangeAdminEmail(string intemzenyAzonosito, string newAddress)
|
||||
{
|
||||
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
|
||||
|
||||
try
|
||||
{
|
||||
JiraClient.ChangeAdminEmail(intemzenyAzonosito, newAddress);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new BlException(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public void SubscribeToBejegyzes(string intemzenyAzonosito, string id)
|
||||
{
|
||||
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
|
||||
|
||||
try
|
||||
{
|
||||
JiraClient.SubscribeToBejegyzes(id);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new BlException(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue