From c1a55fa17b91c8a0eea60c69e6e02b839964194b Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Sat, 26 Apr 2025 12:05:44 +0530 Subject: [PATCH] Removed tenantid filed from Dtos --- Marco.Pms.Model/Dtos/Forum/AddCommentDto.cs | 1 - Marco.Pms.Model/Dtos/Forum/CreateTicketDto.cs | 1 - .../Controllers/ForumController.cs | 218 +++++++++--------- 3 files changed, 109 insertions(+), 111 deletions(-) diff --git a/Marco.Pms.Model/Dtos/Forum/AddCommentDto.cs b/Marco.Pms.Model/Dtos/Forum/AddCommentDto.cs index b7d9e9d..82ef1d8 100644 --- a/Marco.Pms.Model/Dtos/Forum/AddCommentDto.cs +++ b/Marco.Pms.Model/Dtos/Forum/AddCommentDto.cs @@ -9,6 +9,5 @@ public DateTime SentAt { get; set; } public Guid? ParentMessageId { get; set; } // For threaded replies public ICollection? Attachments { get; set; } - public int TenantId { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/Forum/CreateTicketDto.cs b/Marco.Pms.Model/Dtos/Forum/CreateTicketDto.cs index ab10cd5..b81bf12 100644 --- a/Marco.Pms.Model/Dtos/Forum/CreateTicketDto.cs +++ b/Marco.Pms.Model/Dtos/Forum/CreateTicketDto.cs @@ -14,6 +14,5 @@ public ICollection? Attachments { get; set; } public Guid PriorityId { get; set; } public ICollection? TagIds { get; set; } - public int TenantId { get; set; } } } diff --git a/Marco.Pms.Services/Controllers/ForumController.cs b/Marco.Pms.Services/Controllers/ForumController.cs index 9e62c71..a9b81fd 100644 --- a/Marco.Pms.Services/Controllers/ForumController.cs +++ b/Marco.Pms.Services/Controllers/ForumController.cs @@ -47,122 +47,122 @@ namespace Marco.Pms.Services.Controllers return BadRequest(ApiResponse.ErrorResponse("Invalid data", errors, 400)); } int tenantId = _userHelper.GetTenantId(); - if (tenantId == createTicketDto.TenantId) + //if (tenantId == createTicketDto.TenantId) + //{ + TicketForum ticketForum = createTicketDto.ToTicketForumFromCreateTicketDto(tenantId); + _context.Tickets.Add(ticketForum); + await _context.SaveChangesAsync(); + + List attachments = new List(); + List ticketTags = new List(); + List documents = new List(); + List tagVMs = new List(); + + if (createTicketDto.Attachments != null) { - TicketForum ticketForum = createTicketDto.ToTicketForumFromCreateTicketDto(); - _context.Tickets.Add(ticketForum); - await _context.SaveChangesAsync(); - - List attachments = new List(); - List ticketTags = new List(); - List documents = new List(); - List tagVMs = new List(); - - if (createTicketDto.Attachments != null) + foreach (var attachmentDto in createTicketDto.Attachments) { - foreach (var attachmentDto in createTicketDto.Attachments) + byte[] fileBytes; + var Image = attachmentDto; + if (string.IsNullOrEmpty(Image.Base64Data)) { - byte[] fileBytes; - var Image = attachmentDto; - if (string.IsNullOrEmpty(Image.Base64Data)) - { - _logger.LogError("Base64 data is missing"); - return BadRequest(ApiResponse.ErrorResponse("Base64 data is missing", "Base64 data is missing", 400)); - } - try - { - //If base64 has a data URI prefix, strip it - var base64 = Image.Base64Data.Contains(",") - ? Image.Base64Data.Substring(Image.Base64Data.IndexOf(",") + 1) - : Image.Base64Data; - - fileBytes = Convert.FromBase64String(base64); - } - catch (Exception ex) - { - _logger.LogError("{error}", ex.Message); - return BadRequest(ApiResponse.ErrorResponse(ex.Message, ex, 400)); ; - } - - using var stream = new MemoryStream(fileBytes); - - - string fileName = _s3Service.GenerateFileName(Image.ContentType, tenantId, string.Empty); - - var objectKey = await _s3Service.UploadFileAsync(stream, fileName, Image.ContentType); - - Document document = attachmentDto.ToDocumentFromForumAttachmentDto(objectKey, objectKey, createTicketDto.CreatedAt, tenantId); - _context.Documents.Add(document); - await _context.SaveChangesAsync(); - - documents.Add(document); - - var attachment = attachmentDto.ToTicketAttachmentFromForumAttachmentDto(ticketForum.Id, document.Id); - attachments.Add(attachment); + _logger.LogError("Base64 data is missing"); + return BadRequest(ApiResponse.ErrorResponse("Base64 data is missing", "Base64 data is missing", 400)); } - _context.TicketAttachments.AddRange(attachments); + try + { + //If base64 has a data URI prefix, strip it + var base64 = Image.Base64Data.Contains(",") + ? Image.Base64Data.Substring(Image.Base64Data.IndexOf(",") + 1) + : Image.Base64Data; + fileBytes = Convert.FromBase64String(base64); + } + catch (Exception ex) + { + _logger.LogError("{error}", ex.Message); + return BadRequest(ApiResponse.ErrorResponse(ex.Message, ex, 400)); ; + } + + using var stream = new MemoryStream(fileBytes); + + + string fileName = _s3Service.GenerateFileName(Image.ContentType, tenantId, string.Empty); + + var objectKey = await _s3Service.UploadFileAsync(stream, fileName, Image.ContentType); + + Document document = attachmentDto.ToDocumentFromForumAttachmentDto(objectKey, objectKey, createTicketDto.CreatedAt, tenantId); + _context.Documents.Add(document); + await _context.SaveChangesAsync(); + + documents.Add(document); + + var attachment = attachmentDto.ToTicketAttachmentFromForumAttachmentDto(ticketForum.Id, document.Id); + attachments.Add(attachment); } - if (createTicketDto.TagIds != null) - { - List? tagMasters = await _context.TicketTagMasters.Where(t => createTicketDto.TagIds.Contains(t.Id)).ToListAsync(); - foreach (var ticketTag in tagMasters) - { - TicketTagVM tagVM = ticketTag.ToTicketTagVMFromTicketTagMaster(); + _context.TicketAttachments.AddRange(attachments); - TicketTag tag = new TicketTag - { - TicketId = ticketForum.Id, - TagId = ticketTag.Id - }; - tagVMs.Add(tagVM); - ticketTags.Add(tag); - } - - _context.TicketTags.AddRange(ticketTags); - } - await _context.SaveChangesAsync(); - - var ticket = await _context.Tickets.Include(t => t.TicketTypeMaster).Include(t => t.TicketStatusMaster).Include(t => t.Priority).FirstOrDefaultAsync(t => t.Id == ticketForum.Id); - - Employee? employee = await _context.Employees.FirstOrDefaultAsync(e => e.Id == ticketForum.CreatedById); - - - ForumTicketVM ticketVM = ticket.ToForumTicketVMFromTicketForum(employee); - - ticketVM.Tags = tagVMs; - - List attachmentVMs = new List(); - foreach (var attachment in attachments) - { - var document = documents.Find(d => d.Id == attachment.FileId); - string preSignedUrl = string.Empty; - if (document != null) - { - preSignedUrl = await _s3Service.GeneratePreSignedUrlAsync(document.S3Key); - } - attachmentVMs.Add(attachment.ToTicketAttachmentVMFromTicketAttachment(preSignedUrl, preSignedUrl)); - } - ticketVM.Attachments = attachmentVMs; - Project project = await _context.Projects.FirstOrDefaultAsync(p => p.Id == ticketForum.LinkedProjectId) ?? new Project(); - ticketVM.ProjectName = project.Name; - if (createTicketDto.LinkedActivityId != null && createTicketDto.LinkedActivityId != 0) - { - WorkItem workItem = await _context.WorkItems.Include(w => w.ActivityMaster).FirstOrDefaultAsync(w => w.Id == ticketForum.LinkedActivityId) ?? new WorkItem(); - if (workItem.ActivityMaster != null) - { - ticketVM.ActivityName = workItem.ActivityMaster.ActivityName; - } - else - { - ticketVM.ActivityName = ""; - } - } - _logger.LogInfo("Ticket created by Employee {EmployeeId} for project {ProjectId}", ticketForum.CreatedById, project.Id); - return Ok(ApiResponse.SuccessResponse(ticketVM, "Ticket Created Successfully", 200)); } - _logger.LogWarning("Employee {EmployeeId} tries to create ticket in different Tenant", createTicketDto.CreatedById); - return Unauthorized(ApiResponse.ErrorResponse("Not Authorized", "Not Authorized", 401)); + if (createTicketDto.TagIds != null) + { + List? tagMasters = await _context.TicketTagMasters.Where(t => createTicketDto.TagIds.Contains(t.Id)).ToListAsync(); + foreach (var ticketTag in tagMasters) + { + TicketTagVM tagVM = ticketTag.ToTicketTagVMFromTicketTagMaster(); + + TicketTag tag = new TicketTag + { + TicketId = ticketForum.Id, + TagId = ticketTag.Id + }; + tagVMs.Add(tagVM); + ticketTags.Add(tag); + } + + _context.TicketTags.AddRange(ticketTags); + } + await _context.SaveChangesAsync(); + + var ticket = await _context.Tickets.Include(t => t.TicketTypeMaster).Include(t => t.TicketStatusMaster).Include(t => t.Priority).FirstOrDefaultAsync(t => t.Id == ticketForum.Id); + + Employee? employee = await _context.Employees.FirstOrDefaultAsync(e => e.Id == ticketForum.CreatedById); + + + ForumTicketVM ticketVM = ticket.ToForumTicketVMFromTicketForum(employee); + + ticketVM.Tags = tagVMs; + + List attachmentVMs = new List(); + foreach (var attachment in attachments) + { + var document = documents.Find(d => d.Id == attachment.FileId); + string preSignedUrl = string.Empty; + if (document != null) + { + preSignedUrl = await _s3Service.GeneratePreSignedUrlAsync(document.S3Key); + } + attachmentVMs.Add(attachment.ToTicketAttachmentVMFromTicketAttachment(preSignedUrl, preSignedUrl)); + } + ticketVM.Attachments = attachmentVMs; + Project project = await _context.Projects.FirstOrDefaultAsync(p => p.Id == ticketForum.LinkedProjectId) ?? new Project(); + ticketVM.ProjectName = project.Name; + if (createTicketDto.LinkedActivityId != null && createTicketDto.LinkedActivityId != 0) + { + WorkItem workItem = await _context.WorkItems.Include(w => w.ActivityMaster).FirstOrDefaultAsync(w => w.Id == ticketForum.LinkedActivityId) ?? new WorkItem(); + if (workItem.ActivityMaster != null) + { + ticketVM.ActivityName = workItem.ActivityMaster.ActivityName; + } + else + { + ticketVM.ActivityName = ""; + } + } + _logger.LogInfo("Ticket created by Employee {EmployeeId} for project {ProjectId}", ticketForum.CreatedById, project.Id); + return Ok(ApiResponse.SuccessResponse(ticketVM, "Ticket Created Successfully", 200)); + //} + //_logger.LogWarning("Employee {EmployeeId} tries to create ticket in different Tenant", createTicketDto.CreatedById); + // return Unauthorized(ApiResponse.ErrorResponse("Not Authorized", "Not Authorized", 401)); } [HttpPost("ticket/edit")] public async Task UpdateNewTicket([FromBody] UpdateTicketDto updateTicketDto) @@ -368,7 +368,7 @@ namespace Marco.Pms.Services.Controllers List attachments = new List(); List documents = new List(); - TicketComment comment = addCommentDto.ToTicketCommentFromAddCommentDto(); + TicketComment comment = addCommentDto.ToTicketCommentFromAddCommentDto(tenantId); _context.TicketComments.Add(comment); await _context.SaveChangesAsync();