diff --git a/DamageAssesmentApi/DamageAssesment.Api.DocuLinks.Test/DamageAssesment - Backup.Api.DocuLinks.Test.csproj b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks.Test/DamageAssesment - Backup.Api.DocuLinks.Test.csproj
new file mode 100644
index 0000000..6d6c72f
--- /dev/null
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks.Test/DamageAssesment - Backup.Api.DocuLinks.Test.csproj
@@ -0,0 +1,27 @@
+
+
+
+ net6.0
+ enable
+ enable
+
+ false
+ true
+
+
+
+
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
+
+
+
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents.Test/DamageAssesment.Api.DocuLinks.Test.csproj b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks.Test/DamageAssesment.Api.DocuLinks.Test.csproj
similarity index 93%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents.Test/DamageAssesment.Api.DocuLinks.Test.csproj
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks.Test/DamageAssesment.Api.DocuLinks.Test.csproj
index e990a2c..6d6c72f 100644
--- a/DamageAssesmentApi/DamageAssesment.Api.Documents.Test/DamageAssesment.Api.DocuLinks.Test.csproj
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks.Test/DamageAssesment.Api.DocuLinks.Test.csproj
@@ -21,7 +21,7 @@
-
+
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents.Test/DocumentsServiceTest.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks.Test/DoculinkServiceTest.cs
similarity index 67%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents.Test/DocumentsServiceTest.cs
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks.Test/DoculinkServiceTest.cs
index 9ca0bbd..b953eeb 100644
--- a/DamageAssesmentApi/DamageAssesment.Api.Documents.Test/DocumentsServiceTest.cs
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks.Test/DoculinkServiceTest.cs
@@ -1,11 +1,11 @@
-using DamageAssesment.Api.Documents.Controllers;
-using DamageAssesment.Api.Documents.Interfaces;
-using DamageAssesment.Api.Documents.Models;
+using DamageAssesment.Api.DocuLinks.Controllers;
+using DamageAssesment.Api.DocuLinks.Interfaces;
+using DamageAssesment.Api.DocuLinks.Models;
using Microsoft.AspNetCore.Mvc;
using Moq;
using Xunit;
-namespace DamageAssesment.Api.Documents.Test
+namespace DamageAssesment.Api.DocuLinks.Test
{
public class DocumentServiceTest
@@ -14,67 +14,66 @@ namespace DamageAssesment.Api.Documents.Test
[Fact(DisplayName = "Get Documents - NoContent Case")]
public async Task GetDocumentsLanguageAsync_ShouldReturnStatusCode204()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await MockData.getNoContentResponse();
- mockDocumentService.Setup(service => service.GetdocumentsByLinkAsync("forms","en")).ReturnsAsync(mockResponse);
+ mockDocumentService.Setup(service => service.GetdocumentsByLinkAsync("forms","en",null)).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
- var result = (NoContentResult)await DocumentProvider.GetDocumentsAsync("", "");
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
+ var result = (NoContentResult)await DocumentProvider.GetDocumentsAsync("", "", null);
Assert.Equal(204, result.StatusCode);
}
- [Fact(DisplayName = "Get Documents - NoContent Case")]
+ [Fact(DisplayName = "Get active Documents - NoContent Case")]
public async Task GetDocumentsLinkTypeAsync_ShouldReturnStatusCode204()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await MockData.getNoContentResponse();
- mockDocumentService.Setup(service => service.GetdocumentsByLinkAsync("forms","en")).ReturnsAsync(mockResponse);
+ mockDocumentService.Setup(service => service.GetdocumentsByLinkAsync("forms", "en", true)).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
- var result = (NoContentResult)await DocumentProvider.GetDocumentsAsync("", "");
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
+ var result = (NoContentResult)await DocumentProvider.GetDocumentsByActiveAsync("", "");
Assert.Equal(204, result.StatusCode);
}
[Fact(DisplayName = "Get Documents - Ok case")]
public async Task GetDocumentsAsync_ShouldReturnStatusCode200()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await MockData.getOkResponse();
- mockDocumentService.Setup(service => service.GetdocumentsByLinkAsync("forms","en")).ReturnsAsync(mockResponse);
+ mockDocumentService.Setup(service => service.GetdocumentsByLinkAsync("forms","en", null)).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
- var result = (OkObjectResult)await DocumentProvider.GetDocumentsAsync("forms","en");
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
+ var result = (OkObjectResult)await DocumentProvider.GetDocumentsAsync("forms","en", null);
Assert.Equal(200, result.StatusCode);
}
-
- [Fact(DisplayName = "Get Documents - NoContent Case")]
- public async Task GetDocumentsAsync_ShouldReturnStatusCode204()
+ [Fact(DisplayName = "Get active Documents - Ok case")]
+ public async Task GetActiveDocumentsAsync_ShouldReturnStatusCode200()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
- var mockResponse = await MockData.getNoContentResponse();
- mockDocumentService.Setup(service => service.GetdocumentsByLinkAsync("forms", "en")).ReturnsAsync(mockResponse);
+ var mockResponse = await MockData.getOkResponse();
+ mockDocumentService.Setup(service => service.GetdocumentsByLinkAsync("forms", "en", true)).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
- var result = (NoContentResult)await DocumentProvider.GetDocumentsAsync("forms","en");
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
+ var result = (OkObjectResult)await DocumentProvider.GetDocumentsByActiveAsync("forms", "en");
- Assert.Equal(204, result.StatusCode);
+ Assert.Equal(200, result.StatusCode);
}
[Fact(DisplayName = "Get Document by Id - Ok case")]
public async Task GetDocumentAsync_ShouldReturnStatusCode200()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await MockData.getOkResponse(1);
mockDocumentService.Setup(service => service.GetDocumentAsync(1,"forms","en")).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
var result = (OkObjectResult)await DocumentProvider.GetDocumentAsync(1, "forms", "en");
Assert.Equal(200, result.StatusCode);
@@ -83,24 +82,24 @@ namespace DamageAssesment.Api.Documents.Test
[Fact(DisplayName = "Get Document by Id - NotFound case")]
public async Task GetDocumentAsync_ShouldReturnStatusCode404()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await MockData.getNotFoundResponse();
mockDocumentService.Setup(service => service.GetDocumentAsync(99, "forms", "en")).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
var result = (NotFoundResult)await DocumentProvider.GetDocumentAsync(99, "forms", "en");
Assert.Equal(404, result.StatusCode);
}
[Fact(DisplayName = "Post Document - Ok case")]
public async Task PostDocumentAsync_ShouldReturnStatusCode200()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await MockData.getOkResponse(1);
var mockInputDocument = await MockData.getInputDocumentData();
- var DocumentResponse = await MockData.GetDocumentsInfo(0);
+ var DocumentResponse = await MockData.GetDocuLinksInfo(0);
mockDocumentService.Setup(service => service.PostDocumentAsync(mockInputDocument)).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
var result = (NoContentResult)await DocumentProvider.CreateDocument(DocumentResponse);
Assert.Equal(204, result.StatusCode);
@@ -109,13 +108,13 @@ namespace DamageAssesment.Api.Documents.Test
[Fact(DisplayName = "Post Document - BadRequest case")]
public async Task PostDocumentAsync_ShouldReturnStatusCode400()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockInputDocument = await MockData.getInputDocumentData();
var mockResponse = await MockData.getBadRequestResponse();
- DocumentInfo documentInfo = null;
+ ReqDoculink documentInfo = null;
mockDocumentService.Setup(service => service.PostDocumentAsync(mockInputDocument)).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
var result = (BadRequestObjectResult)await DocumentProvider.CreateDocument(documentInfo);
Assert.Equal(400, result.StatusCode);
@@ -124,13 +123,13 @@ namespace DamageAssesment.Api.Documents.Test
[Fact(DisplayName = "Put Document - Ok case")]
public async Task PutDocumentAsync_ShouldReturnStatusCode200()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await MockData.getOkResponse(1);
var mockInputDocument = await MockData.getInputDocumentData();
- var DocumentResponse = await MockData.GetDocumentsInfo(1);
+ var DocumentResponse = await MockData.GetDocuLinksInfo(1);
mockDocumentService.Setup(service => service.UpdateDocumentAsync(1,mockInputDocument)).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
var result = (NotFoundResult)await DocumentProvider.UpdateDocument(1,DocumentResponse);
Assert.Equal(404, result.StatusCode);
@@ -139,12 +138,12 @@ namespace DamageAssesment.Api.Documents.Test
[Fact(DisplayName = "Put Document - BadRequest case")]
public async Task PutDocumentAsync_ShouldReturnStatusCode400()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await MockData.getBadRequestResponse();
var mockInputDocument = await MockData.getInputDocumentData();
mockDocumentService.Setup(service => service.UpdateDocumentAsync(99,mockInputDocument)).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
var result = (BadRequestObjectResult)await DocumentProvider.UpdateDocument(99,null);
Assert.Equal(400, result.StatusCode);
}
@@ -152,11 +151,11 @@ namespace DamageAssesment.Api.Documents.Test
[Fact(DisplayName = "Delete Document - Ok case")]
public async Task DeleteDocumentAsync_ShouldReturnStatusCode200()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await MockData.getOkResponse(1);
mockDocumentService.Setup(service => service.DeleteDocumentAsync(1)).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
var result = (OkObjectResult)await DocumentProvider.DeleteDocument(1);
Assert.Equal(200, result.StatusCode);
@@ -164,11 +163,11 @@ namespace DamageAssesment.Api.Documents.Test
[Fact(DisplayName = "Delete Document - NotFound case")]
public async Task DeleteDocumentAsync_ShouldReturnStatusCode404()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await MockData.getNotFoundResponse();
mockDocumentService.Setup(service => service.DeleteDocumentAsync(1)).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
var result = (NotFoundResult)await DocumentProvider.DeleteDocument(1);
Assert.Equal(404, result.StatusCode);
}
@@ -180,12 +179,12 @@ namespace DamageAssesment.Api.Documents.Test
[Fact(DisplayName = "Get Link types - Ok case")]
public async Task GetDocumentCategoriesAsync_ShouldReturnStatusCode200()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await LinkTypeMockData.getOkResponse();
- mockDocumentService.Setup(service => service.GetLinkTypesAsync()).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
- var result = (OkObjectResult)await DocumentProvider.GetLinkTypesAsync();
+ mockDocumentService.Setup(service => service.GetLinkTypesAsync("en")).ReturnsAsync(mockResponse);
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
+ var result = (OkObjectResult)await DocumentProvider.GetLinkTypesAsync("en");
Assert.Equal(200, result.StatusCode);
}
@@ -193,13 +192,13 @@ namespace DamageAssesment.Api.Documents.Test
[Fact(DisplayName = "Get Link types - NoContent Case")]
public async Task GetDocumentCategoriesAsync_ShouldReturnStatusCode204()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await LinkTypeMockData.getNoContentResponse();
- mockDocumentService.Setup(service => service.GetLinkTypesAsync()).ReturnsAsync(mockResponse);
+ mockDocumentService.Setup(service => service.GetLinkTypesAsync("en")).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
- var result = (NoContentResult)await DocumentProvider.GetLinkTypesAsync();
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
+ var result = (NoContentResult)await DocumentProvider.GetLinkTypesAsync("en");
Assert.Equal(204, result.StatusCode);
}
@@ -207,12 +206,12 @@ namespace DamageAssesment.Api.Documents.Test
[Fact(DisplayName = "Get Link Type by Id - Ok case")]
public async Task GetDocumentcategoryAsync_ShouldReturnStatusCode200()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await LinkTypeMockData.getOkResponse(1);
- mockDocumentService.Setup(service => service.GetLinkTypeAsync(1)).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
- var result = (OkObjectResult)await DocumentProvider.GetLinkTypeAsync(1);
+ mockDocumentService.Setup(service => service.GetLinkTypeAsync(1,"en")).ReturnsAsync(mockResponse);
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
+ var result = (OkObjectResult)await DocumentProvider.GetLinkTypeAsync(1, "en");
Assert.Equal(200, result.StatusCode);
}
@@ -220,25 +219,25 @@ namespace DamageAssesment.Api.Documents.Test
[Fact(DisplayName = "Get Link Type by Id - NotFound case")]
public async Task GetDocumentcategoryAsync_ShouldReturnStatusCode404()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await LinkTypeMockData.getNotFoundResponse();
- mockDocumentService.Setup(service => service.GetLinkTypeAsync(99)).ReturnsAsync(mockResponse);
+ mockDocumentService.Setup(service => service.GetLinkTypeAsync(99, "en")).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
- var result = (NotFoundResult)await DocumentProvider.GetLinkTypeAsync(99);
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
+ var result = (NotFoundResult)await DocumentProvider.GetLinkTypeAsync(99, "en");
Assert.Equal(404, result.StatusCode);
}
[Fact(DisplayName = "Post Link Type - Ok case")]
public async Task PostDocumentcategoryAsync_ShouldReturnStatusCode200()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await LinkTypeMockData.getOkResponse(1);
var mockInputDocument = await LinkTypeMockData.getInputLinkData(0);
mockDocumentService.Setup(service => service.PostLinkTypeAsync(mockInputDocument)).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
var result = (OkObjectResult)await DocumentProvider.CreateLinkType(mockInputDocument);
Assert.Equal(200, result.StatusCode);
@@ -247,12 +246,12 @@ namespace DamageAssesment.Api.Documents.Test
[Fact(DisplayName = "Post Link Type - BadRequest case")]
public async Task PostDocumentcategoryAsync_ShouldReturnStatusCode400()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockInputDocument = await LinkTypeMockData.getInputLinkData(99);
var mockResponse = await LinkTypeMockData.getBadRequestResponse();
mockDocumentService.Setup(service => service.PostLinkTypeAsync(mockInputDocument)).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
var result = (BadRequestObjectResult)await DocumentProvider.CreateLinkType(mockInputDocument);
Assert.Equal(400, result.StatusCode);
@@ -261,13 +260,13 @@ namespace DamageAssesment.Api.Documents.Test
[Fact(DisplayName = "Put Document - Ok case")]
public async Task PutDocumentcategoryAsync_ShouldReturnStatusCode200()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await LinkTypeMockData.getOkResponse(1);
var mockInputDocument = await LinkTypeMockData.getInputLinkData(1);
- mockDocumentService.Setup(service => service.UpdateLinkTypeAsync(mockInputDocument)).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
- var result = (OkObjectResult)await DocumentProvider.UpdateLinkType(mockInputDocument);
+ mockDocumentService.Setup(service => service.UpdateLinkTypeAsync(1,mockInputDocument)).ReturnsAsync(mockResponse);
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
+ var result = (OkObjectResult)await DocumentProvider.UpdateLinkType(1,mockInputDocument);
Assert.Equal(200, result.StatusCode);
}
@@ -275,13 +274,13 @@ namespace DamageAssesment.Api.Documents.Test
[Fact(DisplayName = "Put Document - NotFound case")]
public async Task PutDocumentcategoryAsync_ShouldReturnStatusCode404()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await LinkTypeMockData.getNotFoundResponse();
var mockInputDocument = await LinkTypeMockData.getInputLinkData(99);
- mockDocumentService.Setup(service => service.UpdateLinkTypeAsync(mockInputDocument)).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
- var result = (NotFoundObjectResult)await DocumentProvider.UpdateLinkType(mockInputDocument);
+ mockDocumentService.Setup(service => service.UpdateLinkTypeAsync(99,mockInputDocument)).ReturnsAsync(mockResponse);
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
+ var result = (NotFoundObjectResult)await DocumentProvider.UpdateLinkType(99,mockInputDocument);
Assert.Equal(404, result.StatusCode);
}
@@ -289,13 +288,13 @@ namespace DamageAssesment.Api.Documents.Test
[Fact(DisplayName = "Put Document - BadRequest case")]
public async Task PutDocumentcategoryAsync_ShouldReturnStatusCode400()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await LinkTypeMockData.getBadRequestResponse();
var mockInputDocument = await LinkTypeMockData.getInputLinkData(1);
- mockDocumentService.Setup(service => service.UpdateLinkTypeAsync(mockInputDocument)).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
- var result = (BadRequestObjectResult)await DocumentProvider.UpdateLinkType(mockInputDocument);
+ mockDocumentService.Setup(service => service.UpdateLinkTypeAsync(1,mockInputDocument)).ReturnsAsync(mockResponse);
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
+ var result = (BadRequestObjectResult)await DocumentProvider.UpdateLinkType(1, mockInputDocument);
Assert.Equal(400, result.StatusCode);
}
@@ -303,12 +302,12 @@ namespace DamageAssesment.Api.Documents.Test
[Fact(DisplayName = "Delete Document - Ok case")]
public async Task DeleteDocumentcategoryAsync_ShouldReturnStatusCode200()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await LinkTypeMockData.getOkResponse(1);
mockDocumentService.Setup(service => service.DeleteLinkTypeAsync(1)).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
var result = (OkObjectResult)await DocumentProvider.DeleteLinkType(1);
Assert.Equal(200, result.StatusCode);
@@ -316,12 +315,12 @@ namespace DamageAssesment.Api.Documents.Test
[Fact(DisplayName = "Delete Document - NotFound case")]
public async Task DeleteDocumentcategoryAsync_ShouldReturnStatusCode404()
{
- var mockDocumentService = new Mock();
+ var mockDocumentService = new Mock();
var mockUploadService = new Mock();
var mockResponse = await LinkTypeMockData.getNotFoundResponse();
mockDocumentService.Setup(service => service.DeleteLinkTypeAsync(1)).ReturnsAsync(mockResponse);
- var DocumentProvider = new DocumentsController(mockDocumentService.Object, mockUploadService.Object);
+ var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
var result = (NotFoundResult)await DocumentProvider.DeleteLinkType(99);
Assert.Equal(404, result.StatusCode);
diff --git a/DamageAssesmentApi/DamageAssesment.Api.DocuLinks.Test/LinkTypeMockData.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks.Test/LinkTypeMockData.cs
new file mode 100644
index 0000000..8ed56f1
--- /dev/null
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks.Test/LinkTypeMockData.cs
@@ -0,0 +1,71 @@
+using DamageAssesment.Api.DocuLinks.Db;
+using DamageAssesment.Api.DocuLinks.Models;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Mail;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DamageAssesment.Api.DocuLinks.Test
+{
+ public class LinkTypeMockData
+ {
+
+ public static async Task<(bool, List, string)> getOkResponse()
+ {
+ List list = new List();
+ Dictionary dictdesc = new Dictionary();
+ dictdesc.Add("en", "test"); dictdesc.Add("fr", "tester");
+ for (int i = 1; i < 4; i++)
+ {
+ list.Add(new DocuLinks.Models.ResLinkType()
+ {
+ Id = i,
+ titles= dictdesc,
+ CustomOrder=i,
+ IsActive = true
+ });
+ }
+ return (true, list, null);
+ }
+ public static async Task<(bool, DocuLinks.Models.ResLinkType, string)> getOkResponse(int Id)
+ {
+ var DocuLinks = await getOkResponse();
+ var Document = DocuLinks.Item2.FirstOrDefault(s => s.Id == Id);
+ return (true, Document, null);
+ }
+ public static async Task<(bool, DocuLinks.Models.ResLinkType, string)> getBadRequestResponse()
+ {
+ return (false, null, "Bad Request");
+ }
+
+ public static async Task<(bool, DocuLinks.Models.ResLinkType, string)> getNotFoundResponse()
+ {
+ return (false, null, "Not Found");
+ }
+ public static async Task<(bool, IEnumerable, string)> getNoContentResponse()
+ {
+ IEnumerable list = new List();
+ return (false, list, null);
+ }
+
+ public static async Task getInputLinkData(int id)
+ {
+ List DocuLinksTranslations = new List();
+ DocuLinksTranslations.Add(new Models.LinksTranslation()
+ {
+ Language = "en",
+ TypeText = "tel"
+ });
+ return new Models.LinkType
+ {
+ Id = id,
+ linksTranslations = DocuLinksTranslations,
+ CustomOrder=1,
+ IsActive = true
+ };
+ }
+
+ }
+}
diff --git a/DamageAssesmentApi/DamageAssesment.Api.DocuLinks.Test/MockData.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks.Test/MockData.cs
new file mode 100644
index 0000000..bd10e4b
--- /dev/null
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks.Test/MockData.cs
@@ -0,0 +1,137 @@
+using DamageAssesment.Api.DocuLinks.Models;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Mail;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DamageAssesment.Api.DocuLinks.Test
+{
+ public class MockData
+ {
+
+ public static async Task<(bool, List, string)> getOkResponse()
+ {
+ List list = new List();
+
+ for (int i = 1; i < 4; i++)
+ {
+ Dictionary dicttitle = new Dictionary();
+ Dictionary dictdesc = new Dictionary();
+ dicttitle.Add("en", "test"); dicttitle.Add("fr", "tester");
+ dictdesc.Add("en", "test"); dictdesc.Add("fr", "tester");
+ List DocuLinksTranslations = new List();
+ DocuLinksTranslations.Add(new DoculinkTranslation()
+ {
+ Language = "en",
+ title = "tel"+i,
+ description = "Sample"+i
+ });
+ List doclinksAttachments = new List();
+ doclinksAttachments.Add(new DoculinkAttachments()
+ {
+ docName = "",Path="www.google.com",
+ IsAttachments=false,CustomOrder=1
+ });
+ list.Add(new DocuLinks.Models.ResDoculink()
+ {
+
+ Id = i,
+ linkTypeId = i,
+ IsActive = true,
+ titles= dicttitle,
+ description=dictdesc,
+ CustomOrder=i,
+ doclinksAttachments= doclinksAttachments
+ });
+ }
+ return (true, list, null);
+ }
+ public static async Task<(bool, DocuLinks.Models.ResDoculink, string)> getOkResponse(int Id)
+ {
+ var DocuLinks = await getOkResponse();
+ var Document = DocuLinks.Item2.FirstOrDefault(s => s.Id == Id);
+ return (true, Document, null);
+ }
+
+ public static async Task<(bool, DocuLinks.Models.ResDoculink, string)> getBadRequestResponse()
+ {
+ return (false, null, "Bad Request");
+ }
+
+ public static async Task<(bool, DocuLinks.Models.ResDoculink, string)> getNotFoundResponse()
+ {
+ return (false, null, "Not Found");
+ }
+ public static async Task<(bool, IEnumerable, string)> getNoContentResponse()
+ {
+ IEnumerable list = new List();
+ return (false, list, null);
+ }
+ public static async Task GetDocuLinksInfo(int id)
+ {
+
+ List fileModels = new List();
+ fileModels.Add( new FileModel() { FileName = "Sample", FileContent = "c2FtcGxl", FileExtension = ".txt",IsAttachments=true,CustomOrder=1 });
+ return new ReqDoculink() { Id=id, linkTypeId = 1, CustomOrder = 1, Files = fileModels };
+ }
+ public static async Task getInputDocumentData()
+ {
+ List DocuLinksTranslations = new List();
+ DocuLinksTranslations.Add(new DoculinkTranslation()
+ {
+ Language = "en",
+ title = "tel",
+ description = "Sample"
+ });
+ List doclinksAttachments = new List();
+ doclinksAttachments.Add(new DoculinkAttachments()
+ {
+ docName = "",
+ Path = "www.google.com",
+ IsAttachments = false,
+ CustomOrder = 1
+ });
+ return new Models.Doculink
+ {
+ Id = 1,
+ linkTypeId = 1,
+ IsActive = true,
+ CustomOrder=1,
+ documentsTranslations = DocuLinksTranslations,
+ doclinksAttachments= doclinksAttachments
+ };
+ }
+ public static async Task> getInputDocuLinksData()
+ {
+ List DocuLinksTranslations = new List();
+ DocuLinksTranslations.Add(new DoculinkTranslation()
+ {
+ Language = "en",
+ title = "tel",
+ description = "Sample"
+ });
+ List doclinksAttachments = new List();
+ doclinksAttachments.Add(new DoculinkAttachments()
+ {
+ docName = "",
+ Path = "www.google.com",
+ IsAttachments = false,
+ CustomOrder = 1
+ });
+ List DocuLinks = new List();
+ DocuLinks.Add(new Models.Doculink
+ {
+ Id = 1,
+ linkTypeId = 1,
+ IsActive = true,
+ CustomOrder = 1,
+ documentsTranslations = DocuLinksTranslations,
+ doclinksAttachments = doclinksAttachments
+ });
+ return DocuLinks;
+ }
+
+ }
+}
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents/Controllers/DocumentsController.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Controllers/DoculinkController.cs
similarity index 67%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents/Controllers/DocumentsController.cs
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Controllers/DoculinkController.cs
index dcf43b9..cfbd508 100644
--- a/DamageAssesmentApi/DamageAssesment.Api.Documents/Controllers/DocumentsController.cs
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Controllers/DoculinkController.cs
@@ -1,19 +1,19 @@
-using DamageAssesment.Api.Documents.Db;
-using DamageAssesment.Api.Documents.Interfaces;
-using DamageAssesment.Api.Documents.Models;
-using DamageAssesment.Api.Documents.Providers;
+using DamageAssesment.Api.DocuLinks.Db;
+using DamageAssesment.Api.DocuLinks.Interfaces;
+using DamageAssesment.Api.DocuLinks.Models;
+using DamageAssesment.Api.DocuLinks.Providers;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
-namespace DamageAssesment.Api.Documents.Controllers
+namespace DamageAssesment.Api.DocuLinks.Controllers
{
[ApiController]
- public class DocumentsController : ControllerBase
+ public class DoculinkController : ControllerBase
{
- private readonly IDocumentsProvider documentsProvider;
+ private readonly IDoculinkProvider documentsProvider;
private readonly IUploadService uploadService;
- public DocumentsController(IDocumentsProvider documentsProvider,IUploadService uploadService)
+ public DoculinkController(IDoculinkProvider documentsProvider,IUploadService uploadService)
{
this.documentsProvider = documentsProvider;
@@ -21,13 +21,14 @@ namespace DamageAssesment.Api.Documents.Controllers
}
///
- /// Get all document link type.
+ /// Get all Doculink type.
///
[HttpGet]
[Route("doculinks/types")]
- public async Task GetLinkTypesAsync()
+ [Route("doculinks/types/{language:alpha}")]
+ public async Task GetLinkTypesAsync(string? language)
{
- var result = await this.documentsProvider.GetLinkTypesAsync();
+ var result = await this.documentsProvider.GetLinkTypesAsync(language);
if (result.IsSuccess)
{
return Ok(result.LinkTypes);
@@ -35,13 +36,14 @@ namespace DamageAssesment.Api.Documents.Controllers
return NoContent();
}
///
- /// Get a document link type by id.
+ /// Get a Doculink type by id.
///
[HttpGet]
[Route("doculinks/types/{id}")]
- public async Task GetLinkTypeAsync(int id)
+ [Route("doculinks/types/{id}/{language:alpha}")]
+ public async Task GetLinkTypeAsync(int id,string? language)
{
- var result = await this.documentsProvider.GetLinkTypeAsync(id);
+ var result = await this.documentsProvider.GetLinkTypeAsync(id, language);
if (result.IsSuccess)
{
return Ok(result.LinkType);
@@ -49,15 +51,15 @@ namespace DamageAssesment.Api.Documents.Controllers
return NotFound();
}
///
- /// Update a existing document link type.
+ /// Update a existing Doculink type.
///
[HttpPut]
- [Route("doculinks/types")]
- public async Task UpdateLinkType(Models.LinkType linkType)
+ [Route("doculinks/types/{id}")]
+ public async Task UpdateLinkType(int id,Models.LinkType linkType)
{
if (linkType != null)
{
- var result = await this.documentsProvider.UpdateLinkTypeAsync(linkType);
+ var result = await this.documentsProvider.UpdateLinkTypeAsync(id,linkType);
if (result.IsSuccess)
{
return Ok(result.LinkType);
@@ -70,7 +72,7 @@ namespace DamageAssesment.Api.Documents.Controllers
return CreatedAtRoute("DefaultApi", new { id = linkType.Id }, linkType);
}
///
- /// Create a new document link type.
+ /// Create a new Doculink type.
///
[HttpPost]
[Route("doculinks/types")]
@@ -88,7 +90,7 @@ namespace DamageAssesment.Api.Documents.Controllers
return CreatedAtRoute("DefaultApi", new { id = linkType.Id }, linkType);
}
///
- /// Delete a existing document link type by id.
+ /// Delete a existing Doculink type by id.
///
[HttpDelete]
[Route("doculinks/types/{id}")]
@@ -101,17 +103,17 @@ namespace DamageAssesment.Api.Documents.Controllers
}
return NotFound();
}
- ///
- /// Get all documents.
- ///
- ///
- [Route("doculinks")]
+ ///
+ /// Get all Doculink.
+ ///
+ ///
+ [Route("doculinks")]
[Route("doculinks/{linktype:alpha}")]
[Route("doculinks/{linktype:alpha}/{language:alpha}")]
[HttpGet]
- public async Task GetDocumentsAsync(string? linktype, string? language)
+ public async Task GetDocumentsAsync(string? linktype, string? language,bool? isactive)
{
- var result = await this.documentsProvider.GetdocumentsByLinkAsync(linktype, language);
+ var result = await this.documentsProvider.GetdocumentsByLinkAsync(linktype, language, isactive);
if (result.IsSuccess)
{
return Ok(result.documents);
@@ -119,24 +121,24 @@ namespace DamageAssesment.Api.Documents.Controllers
return NoContent();
}
///
- /// Get all documents.
+ /// Get all active Doculink.
///
- ///
- //[Route("doculinks/{language:alpha}")]
- //[Route("doculinks")]
- //[HttpGet]
- //public async Task GetDocumentsAsync(string? language)
- //{
- // var result = await this.documentsProvider.GetdocumentsAsync(language);
- // if (result.IsSuccess)
- // {
- // return Ok(result.documents);
- // }
- // return NoContent();
- //}
+ [Route("doculinks/active")]
+ [Route("doculinks/active/{linktype:alpha}")]
+ [Route("doculinks/active/{linktype:alpha}/{language:alpha}")]
+ [HttpGet]
+ public async Task GetDocumentsByActiveAsync(string? linktype, string? language)
+ {
+ var result = await this.documentsProvider.GetdocumentsByLinkAsync(linktype, language,true);
+ if (result.IsSuccess)
+ {
+ return Ok(result.documents);
+ }
+ return NoContent();
+ }
///
- /// Get a document by id.
+ /// Get a Doculink by id.
///
[HttpGet]
[Route("doculinks/{id}")]
@@ -152,19 +154,20 @@ namespace DamageAssesment.Api.Documents.Controllers
return NotFound();
}
///
- /// Upload new document.
+ /// update existing doclink.
///
[HttpPut]
[Route("doculinks/{id}")]
- public async Task UpdateDocument(int id,DocumentInfo documentInfo)
+ public async Task UpdateDocument(int id,ReqDoculink documentInfo)
{
if (documentInfo != null)
{
var dbdoc = await this.documentsProvider.GetDocumentByidAsync(id);
if (dbdoc.IsSuccess)
{
- Models.Document document = uploadService.UpdateDocuments(dbdoc.Document, documentInfo);
- var result = await this.documentsProvider.UpdateDocumentAsync(id,document);
+ var documents = await this.documentsProvider.GetDocumentCounter();
+ Models.Doculink DocuLink= uploadService.UpdateDocuments(documents.counter,dbdoc.Document, documentInfo);
+ var result = await this.documentsProvider.UpdateDocumentAsync(id, DocuLink);
if (result.IsSuccess)
{
return Ok(result.Document);
@@ -176,19 +179,19 @@ namespace DamageAssesment.Api.Documents.Controllers
return BadRequest(documentInfo);
}
///
- /// update existing document.
+ /// Create new doclink.
///
[HttpPost]
[Route("doculinks")]
- public async Task CreateDocument(DocumentInfo documentInfo)
+ public async Task CreateDocument(ReqDoculink documentInfo)
{
try
{
if (documentInfo != null)
{
var documents = await this.documentsProvider.GetDocumentCounter();
- Models.Document document = uploadService.UploadDocument(documents.counter, documentInfo);
- var result = await this.documentsProvider.PostDocumentAsync(document);
+ Models.Doculink DocuLink= uploadService.UploadDocument(documents.counter, documentInfo);
+ var result = await this.documentsProvider.PostDocumentAsync(DocuLink);
if (result.IsSuccess)
{
return Ok(result.Document);
@@ -203,7 +206,7 @@ namespace DamageAssesment.Api.Documents.Controllers
}
}
///
- /// Delete document by id.
+ /// Delete Doculink by id.
///
[HttpDelete]
[Route("doculinks/{id}")]
@@ -214,7 +217,10 @@ namespace DamageAssesment.Api.Documents.Controllers
if (result.IsSuccess)
{
// deleting file from folder
- uploadService.Movefile(result.Document.Path);
+ foreach (var item in result.Document.doclinksAttachments)
+ {
+ uploadService.Movefile(item.Path);
+ }
return Ok(result.Document);
}
return NotFound();
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents/DamageAssesment.Api.DocuLinks.csproj b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/DamageAssesment.Api.DocuLinks.csproj
similarity index 95%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents/DamageAssesment.Api.DocuLinks.csproj
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks/DamageAssesment.Api.DocuLinks.csproj
index a72f082..2e8659c 100644
--- a/DamageAssesmentApi/DamageAssesment.Api.Documents/DamageAssesment.Api.DocuLinks.csproj
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/DamageAssesment.Api.DocuLinks.csproj
@@ -28,8 +28,4 @@
-
-
-
-
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents/Db/Document.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Db/Doculink.cs
similarity index 60%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents/Db/Document.cs
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Db/Doculink.cs
index 5313d72..8fe5f21 100644
--- a/DamageAssesmentApi/DamageAssesment.Api.Documents/Db/Document.cs
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Db/Doculink.cs
@@ -1,23 +1,21 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
-namespace DamageAssesment.Api.Documents.Db
+namespace DamageAssesment.Api.DocuLinks.Db
{
- public class Document
+ public class Doculink
{
[Key]
public int Id { get; set; }
[ForeignKey("LinkType")]
public int linkTypeId { get; set; }
- public LinkType? LinkType { get; set; }
- public string docName { get; set; }
-
- public string url { get; set; }
- public string Path { get; set; }
public bool IsActive { get; set; }
+ public bool IsDeleted { get; set; }
+ public int CustomOrder { get; set; }
+ //public bool IsAttachments { get; set; }
+ //public bool IsUrl { get; set; }
public DateTime dateCreated { get; set; }
public DateTime dateUpdated { get; set; }
-
}
}
diff --git a/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Db/DoculinkAttachments.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Db/DoculinkAttachments.cs
new file mode 100644
index 0000000..035ae9b
--- /dev/null
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Db/DoculinkAttachments.cs
@@ -0,0 +1,18 @@
+using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
+
+namespace DamageAssesment.Api.DocuLinks.Db
+{
+ public class DoculinkAttachments
+ {
+
+ [Key]
+ public int Id { get; set; }
+ [ForeignKey("Document")]
+ public int DocumentId { get; set; }
+ public string docName { get; set; }
+ public string Path { get; set; }
+ public bool IsAttachments { get; set; }
+ public int CustomOrder { get; set; }
+ }
+}
diff --git a/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Db/DoculinkDbContext.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Db/DoculinkDbContext.cs
new file mode 100644
index 0000000..e3fdccc
--- /dev/null
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Db/DoculinkDbContext.cs
@@ -0,0 +1,38 @@
+using Microsoft.AspNetCore.Identity;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.Configuration;
+using System.ComponentModel.DataAnnotations;
+
+namespace DamageAssesment.Api.DocuLinks.Db
+{
+ public class DoculinkDbContext : DbContext
+ {
+ public DoculinkDbContext(DbContextOptions options) : base(options)
+ {
+ }
+ public DbSet Documents { get; set; }
+ public DbSet LinkTypes { get; set; }
+ public DbSet DocumentsTranslations { get; set; }
+ public DbSet LinksTranslations { get; set; }
+ public DbSet DoclinksAttachments { get; set; }
+ protected override void OnModelCreating(ModelBuilder modelBuilder)
+ {
+ base.OnModelCreating(modelBuilder);
+ modelBuilder.Entity()
+ .Property(item => item.Id)
+ .ValueGeneratedOnAdd();
+ modelBuilder.Entity()
+ .Property(item => item.Id)
+ .ValueGeneratedOnAdd();
+ modelBuilder.Entity()
+ .Property(item => item.Id)
+ .ValueGeneratedOnAdd();
+ modelBuilder.Entity()
+ .Property(item => item.Id)
+ .ValueGeneratedOnAdd();
+ modelBuilder.Entity()
+ .Property(item => item.Id)
+ .ValueGeneratedOnAdd();
+ }
+ }
+}
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents/Db/DocumentsTranslation.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Db/DoculinkTranslation.cs
similarity index 82%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents/Db/DocumentsTranslation.cs
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Db/DoculinkTranslation.cs
index b3a31fc..b932f66 100644
--- a/DamageAssesmentApi/DamageAssesment.Api.Documents/Db/DocumentsTranslation.cs
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Db/DoculinkTranslation.cs
@@ -1,9 +1,9 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
-namespace DamageAssesment.Api.Documents.Db
+namespace DamageAssesment.Api.DocuLinks.Db
{
- public class DocumentsTranslation
+ public class DoculinkTranslation
{
[Key]
public int Id { get; set; }
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents/Db/LinkType.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Db/LinkType.cs
similarity index 57%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents/Db/LinkType.cs
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Db/LinkType.cs
index f5e1e86..510f9e3 100644
--- a/DamageAssesmentApi/DamageAssesment.Api.Documents/Db/LinkType.cs
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Db/LinkType.cs
@@ -1,13 +1,12 @@
using System.ComponentModel.DataAnnotations;
-namespace DamageAssesment.Api.Documents.Db
+namespace DamageAssesment.Api.DocuLinks.Db
{
public class LinkType
{
[Key]
public int Id { get; set; }
- public string TypeText { get; set; }
public bool IsActive { get; set; }
- public bool IsAttachment { get; set; }
+ public int CustomOrder { get; set; }
}
}
diff --git a/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Db/LinksTranslation.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Db/LinksTranslation.cs
new file mode 100644
index 0000000..e477743
--- /dev/null
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Db/LinksTranslation.cs
@@ -0,0 +1,15 @@
+using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
+
+namespace DamageAssesment.Api.DocuLinks.Db
+{
+ public class LinksTranslation
+ {
+ [Key]
+ public int Id { get; set; }
+ [ForeignKey("LinkType")]
+ public int LinkTypeId { get; set; }
+ public string TypeText { get; set; }
+ public string Language { get; set; }
+ }
+}
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents/Dockerfile b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Dockerfile
similarity index 100%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents/Dockerfile
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Dockerfile
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents/Interfaces/IAzureBlobService.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Interfaces/IAzureBlobService.cs
similarity index 81%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents/Interfaces/IAzureBlobService.cs
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Interfaces/IAzureBlobService.cs
index d88c827..844945e 100644
--- a/DamageAssesmentApi/DamageAssesment.Api.Documents/Interfaces/IAzureBlobService.cs
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Interfaces/IAzureBlobService.cs
@@ -1,6 +1,6 @@
using Azure.Storage.Blobs.Models;
-namespace DamageAssesment.Api.Documents.Interfaces
+namespace DamageAssesment.Api.DocuLinks.Interfaces
{
public interface IAzureBlobService
{
diff --git a/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Interfaces/IDoculinkProvider.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Interfaces/IDoculinkProvider.cs
new file mode 100644
index 0000000..f4f9c84
--- /dev/null
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Interfaces/IDoculinkProvider.cs
@@ -0,0 +1,18 @@
+using DamageAssesment.Api.DocuLinks.Models;
+
+namespace DamageAssesment.Api.DocuLinks.Interfaces
+{
+ public interface IDoculinkProvider : ILinkTypesProvider
+ {
+ Task<(bool IsSuccess, Models.ResDoculink Document, string ErrorMessage)> GetDocumentAsync(int id, string? linktype, string? language);
+ Task<(bool IsSuccess, Models.Doculink Document, string ErrorMessage)> GetDocumentByidAsync(int id);
+ // Task<(bool IsSuccess, IEnumerable documents, string ErrorMessage)> GetDocumnetsAsync(string? language);
+ Task<(bool IsSuccess, IEnumerable documents, string ErrorMessage)> GetdocumentsByLinkAsync(string? linkType, string? language, bool? isactive);
+ Task<(bool IsSuccess, Models.ResDoculink Document, string ErrorMessage)> PostDocumentAsync(Models.Doculink Document);
+ Task<(bool IsSuccess, Models.ResDoculink Document, string ErrorMessage)> UpdateDocumentAsync(int id,Models.Doculink Document);
+ Task<(bool IsSuccess, Models.ResDoculink Document, string ErrorMessage)> DeleteDocumentAsync(int id);
+ Task<(bool IsSuccess, int counter, string message)> GetDocumentCounter();
+
+
+ }
+}
diff --git a/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Interfaces/ILinkTypeProvider.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Interfaces/ILinkTypeProvider.cs
new file mode 100644
index 0000000..133ff16
--- /dev/null
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Interfaces/ILinkTypeProvider.cs
@@ -0,0 +1,11 @@
+namespace DamageAssesment.Api.DocuLinks.Interfaces
+{
+ public interface ILinkTypesProvider
+ {
+ Task<(bool IsSuccess, Models.ResLinkType LinkType, string ErrorMessage)> GetLinkTypeAsync(int id,string? language);
+ Task<(bool IsSuccess, IEnumerable LinkTypes, string ErrorMessage)> GetLinkTypesAsync(string? language);
+ Task<(bool IsSuccess, Models.ResLinkType LinkType, string ErrorMessage)> PostLinkTypeAsync(Models.LinkType LinkType);
+ Task<(bool IsSuccess, Models.ResLinkType LinkType, string ErrorMessage)> UpdateLinkTypeAsync(int id,Models.LinkType LinkType);
+ Task<(bool IsSuccess, Models.ResLinkType LinkType, string ErrorMessage)> DeleteLinkTypeAsync(int id);
+ }
+}
diff --git a/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Interfaces/IUploadService.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Interfaces/IUploadService.cs
new file mode 100644
index 0000000..4219fd6
--- /dev/null
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Interfaces/IUploadService.cs
@@ -0,0 +1,12 @@
+using DamageAssesment.Api.DocuLinks.Models;
+
+namespace DamageAssesment.Api.DocuLinks.Interfaces
+{
+ public interface IUploadService
+ {
+ Models.Doculink UploadDocument( int counter, ReqDoculink documentInfo);
+ public Models.Doculink UpdateDocuments(int counter, Models.Doculink document, ReqDoculink documentInfo);
+ void Deletefile(string path);
+ void Movefile(string path);
+ }
+}
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents/Migrations/20230828165655_InitialDocumentCreate.Designer.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Migrations/20230828165655_InitialDocumentCreate.Designer.cs
similarity index 91%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents/Migrations/20230828165655_InitialDocumentCreate.Designer.cs
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Migrations/20230828165655_InitialDocumentCreate.Designer.cs
index ba5ecae..8072057 100644
--- a/DamageAssesmentApi/DamageAssesment.Api.Documents/Migrations/20230828165655_InitialDocumentCreate.Designer.cs
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Migrations/20230828165655_InitialDocumentCreate.Designer.cs
@@ -1,6 +1,6 @@
//
using System;
-using DamageAssesment.Api.Documents.Db;
+using DamageAssesment.Api.DocuLinks.Db;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
@@ -9,9 +9,9 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
-namespace DamageAssesment.Api.Documents.Migrations
+namespace DamageAssesment.Api.DocuLinks.Migrations
{
- [DbContext(typeof(DocumentDbContext))]
+ [DbContext(typeof(DoculinkDbContext))]
[Migration("20230828165655_InitialDocumentCreate")]
partial class InitialDocumentCreate
{
@@ -25,7 +25,7 @@ namespace DamageAssesment.Api.Documents.Migrations
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
- modelBuilder.Entity("DamageAssesment.Api.Documents.Db.Document", b =>
+ modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.Document", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
@@ -70,7 +70,7 @@ namespace DamageAssesment.Api.Documents.Migrations
b.ToTable("Documents");
});
- modelBuilder.Entity("DamageAssesment.Api.Documents.Db.LinkType", b =>
+ modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.LinkType", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents/Migrations/20230828165655_InitialDocumentCreate.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Migrations/20230828165655_InitialDocumentCreate.cs
similarity index 97%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents/Migrations/20230828165655_InitialDocumentCreate.cs
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Migrations/20230828165655_InitialDocumentCreate.cs
index 3d55b84..741574e 100644
--- a/DamageAssesmentApi/DamageAssesment.Api.Documents/Migrations/20230828165655_InitialDocumentCreate.cs
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Migrations/20230828165655_InitialDocumentCreate.cs
@@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
-namespace DamageAssesment.Api.Documents.Migrations
+namespace DamageAssesment.Api.DocuLinks.Migrations
{
///
public partial class InitialDocumentCreate : Migration
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents/Migrations/20230830200432_DocumentTranslation.Designer.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Migrations/20230830200432_DocumentTranslation.Designer.cs
similarity index 91%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents/Migrations/20230830200432_DocumentTranslation.Designer.cs
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Migrations/20230830200432_DocumentTranslation.Designer.cs
index 9fcc43d..b9006ba 100644
--- a/DamageAssesmentApi/DamageAssesment.Api.Documents/Migrations/20230830200432_DocumentTranslation.Designer.cs
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Migrations/20230830200432_DocumentTranslation.Designer.cs
@@ -1,6 +1,6 @@
//
using System;
-using DamageAssesment.Api.Documents.Db;
+using DamageAssesment.Api.DocuLinks.Db;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
@@ -9,9 +9,9 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
-namespace DamageAssesment.Api.Documents.Migrations
+namespace DamageAssesment.Api.DocuLinks.Migrations
{
- [DbContext(typeof(DocumentDbContext))]
+ [DbContext(typeof(DoculinkDbContext))]
[Migration("20230830200432_DocumentTranslation")]
partial class DocumentTranslation
{
@@ -25,7 +25,7 @@ namespace DamageAssesment.Api.Documents.Migrations
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
- modelBuilder.Entity("DamageAssesment.Api.Documents.Db.Document", b =>
+ modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.Document", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
@@ -62,7 +62,7 @@ namespace DamageAssesment.Api.Documents.Migrations
b.ToTable("Documents");
});
- modelBuilder.Entity("DamageAssesment.Api.Documents.Db.DocumentsTranslation", b =>
+ modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.DocumentsTranslation", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
@@ -90,7 +90,7 @@ namespace DamageAssesment.Api.Documents.Migrations
b.ToTable("DocumentsTranslations");
});
- modelBuilder.Entity("DamageAssesment.Api.Documents.Db.LinkType", b =>
+ modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.LinkType", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents/Migrations/20230830200432_DocumentTranslation.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Migrations/20230830200432_DocumentTranslation.cs
similarity index 97%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents/Migrations/20230830200432_DocumentTranslation.cs
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Migrations/20230830200432_DocumentTranslation.cs
index 90f26be..d639539 100644
--- a/DamageAssesmentApi/DamageAssesment.Api.Documents/Migrations/20230830200432_DocumentTranslation.cs
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Migrations/20230830200432_DocumentTranslation.cs
@@ -2,7 +2,7 @@
#nullable disable
-namespace DamageAssesment.Api.Documents.Migrations
+namespace DamageAssesment.Api.DocuLinks.Migrations
{
///
public partial class DocumentTranslation : Migration
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents/Migrations/DocumentDbContextModelSnapshot.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Migrations/DocumentDbContextModelSnapshot.cs
similarity index 91%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents/Migrations/DocumentDbContextModelSnapshot.cs
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Migrations/DocumentDbContextModelSnapshot.cs
index 24681f1..a692f80 100644
--- a/DamageAssesmentApi/DamageAssesment.Api.Documents/Migrations/DocumentDbContextModelSnapshot.cs
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Migrations/DocumentDbContextModelSnapshot.cs
@@ -1,6 +1,6 @@
//
using System;
-using DamageAssesment.Api.Documents.Db;
+using DamageAssesment.Api.DocuLinks.Db;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
@@ -8,9 +8,9 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
-namespace DamageAssesment.Api.Documents.Migrations
+namespace DamageAssesment.Api.DocuLinks.Migrations
{
- [DbContext(typeof(DocumentDbContext))]
+ [DbContext(typeof(DoculinkDbContext))]
partial class DocumentDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
@@ -22,7 +22,7 @@ namespace DamageAssesment.Api.Documents.Migrations
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
- modelBuilder.Entity("DamageAssesment.Api.Documents.Db.Document", b =>
+ modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.Document", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
@@ -59,7 +59,7 @@ namespace DamageAssesment.Api.Documents.Migrations
b.ToTable("Documents");
});
- modelBuilder.Entity("DamageAssesment.Api.Documents.Db.DocumentsTranslation", b =>
+ modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.DocumentsTranslation", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
@@ -87,7 +87,7 @@ namespace DamageAssesment.Api.Documents.Migrations
b.ToTable("DocumentsTranslations");
});
- modelBuilder.Entity("DamageAssesment.Api.Documents.Db.LinkType", b =>
+ modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.LinkType", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
diff --git a/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Models/Doculink.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Models/Doculink.cs
new file mode 100644
index 0000000..6fb538b
--- /dev/null
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Models/Doculink.cs
@@ -0,0 +1,25 @@
+using DamageAssesment.Api.DocuLinks.Models;
+using System.ComponentModel.DataAnnotations;
+
+namespace DamageAssesment.Api.DocuLinks.Models
+{
+ public class Doculink : BaseDoculink
+ {
+ public List documentsTranslations { get; set; }
+ }
+ public class ResDoculink:BaseDoculink
+ {
+ public object titles { get; set; }
+ public object description { get; set; }
+ public object linktypes { get; set; }
+ }
+ public class BaseDoculink
+ {
+ public int Id { get; set; }
+ public int linkTypeId { get; set; }
+ public bool IsActive { get; set; }
+ public bool IsDeleted { get; set; }
+ public List doclinksAttachments { get; set; }
+ public int CustomOrder { get; set; }
+ }
+}
diff --git a/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Models/DoculinkAttachments.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Models/DoculinkAttachments.cs
new file mode 100644
index 0000000..ce87857
--- /dev/null
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Models/DoculinkAttachments.cs
@@ -0,0 +1,13 @@
+using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
+
+namespace DamageAssesment.Api.DocuLinks.Models
+{
+ public class DoculinkAttachments
+ {
+ public string docName { get; set; }
+ public string Path { get; set; }
+ public bool IsAttachments { get; set; }
+ public int CustomOrder { get; set; }
+ }
+}
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents/Models/DocumentsTranslation.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Models/DoculinkTranslation.cs
similarity index 74%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents/Models/DocumentsTranslation.cs
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Models/DoculinkTranslation.cs
index f2ca5af..d632557 100644
--- a/DamageAssesmentApi/DamageAssesment.Api.Documents/Models/DocumentsTranslation.cs
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Models/DoculinkTranslation.cs
@@ -1,9 +1,9 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
-namespace DamageAssesment.Api.Documents.Models
+namespace DamageAssesment.Api.DocuLinks.Models
{
- public class DocumentsTranslation
+ public class DoculinkTranslation
{
public string title { get; set; }
public string description { get; set; }
diff --git a/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Models/LinkType.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Models/LinkType.cs
new file mode 100644
index 0000000..37323da
--- /dev/null
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Models/LinkType.cs
@@ -0,0 +1,20 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace DamageAssesment.Api.DocuLinks.Models
+{
+ public class LinkType : BaseLinkType
+ {
+ public List linksTranslations { get; set; }
+ }
+ public class BaseLinkType
+ {
+ public int Id { get; set; }
+ public bool IsActive { get; set; }
+ public int CustomOrder { get; set; }
+ }
+
+ public class ResLinkType : BaseLinkType
+ {
+ public object titles { get; set; }
+ }
+}
diff --git a/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Models/LinksTranslation.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Models/LinksTranslation.cs
new file mode 100644
index 0000000..2008aa8
--- /dev/null
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Models/LinksTranslation.cs
@@ -0,0 +1,11 @@
+using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
+
+namespace DamageAssesment.Api.DocuLinks.Models
+{
+ public class LinksTranslation
+ {
+ public string TypeText { get; set; }
+ public string Language { get; set; }
+ }
+}
diff --git a/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Models/ReqDoculink.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Models/ReqDoculink.cs
new file mode 100644
index 0000000..0f2ea17
--- /dev/null
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Models/ReqDoculink.cs
@@ -0,0 +1,22 @@
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace DamageAssesment.Api.DocuLinks.Models
+{
+ public class ReqDoculink
+ {
+ public int Id { get; set; }
+ public int linkTypeId { get; set; }
+ public List documentsTranslations { get; set; }
+ public int CustomOrder { get; set; }
+ public List? Files { get; set; }
+ }
+ public class FileModel
+ {
+ public string? FileName { get; set; }
+ public string? FileContent { get; set; }
+ public string? FileExtension { get; set; }
+ public int CustomOrder { get; set; }
+ public string url { get;set; }
+ public bool IsAttachments { get; set; }
+ }
+}
diff --git a/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Profiles/DoculinkProfile.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Profiles/DoculinkProfile.cs
new file mode 100644
index 0000000..084638f
--- /dev/null
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Profiles/DoculinkProfile.cs
@@ -0,0 +1,22 @@
+using AutoMapper;
+
+namespace DamageAssesment.Api.DocuLinks.Profiles
+{
+ public class DoculinkProfile : AutoMapper.Profile
+ {
+ public DoculinkProfile()
+ {
+ CreateMap() ;
+ CreateMap();
+ CreateMap();
+ CreateMap();
+ CreateMap();
+ CreateMap();
+ CreateMap();
+ CreateMap();
+ CreateMap();
+ CreateMap();
+ CreateMap();
+ }
+ }
+}
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents/Program.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Program.cs
similarity index 80%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents/Program.cs
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Program.cs
index c9db54e..f25927c 100644
--- a/DamageAssesmentApi/DamageAssesment.Api.Documents/Program.cs
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Program.cs
@@ -1,6 +1,6 @@
-using DamageAssesment.Api.Documents.Db;
-using DamageAssesment.Api.Documents.Interfaces;
-using DamageAssesment.Api.Documents.Providers;
+using DamageAssesment.Api.DocuLinks.Db;
+using DamageAssesment.Api.DocuLinks.Interfaces;
+using DamageAssesment.Api.DocuLinks.Providers;
using Microsoft.EntityFrameworkCore;
using System.Reflection;
@@ -19,11 +19,11 @@ builder.Services.AddSwaggerGen(c =>
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
-builder.Services.AddScoped();
+builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30
-builder.Services.AddDbContext(option =>
+builder.Services.AddDbContext(option =>
{
option.UseInMemoryDatabase("DocumentConnection");
});
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents/Properties/launchSettings.json b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Properties/launchSettings.json
similarity index 81%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents/Properties/launchSettings.json
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Properties/launchSettings.json
index a3cf25e..fe5dfd7 100644
--- a/DamageAssesmentApi/DamageAssesment.Api.Documents/Properties/launchSettings.json
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Properties/launchSettings.json
@@ -4,6 +4,10 @@
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "swagger",
+<<<<<<< HEAD:DamageAssesmentApi/DamageAssesment.Api.Documents/Properties/launchSettings.json
+=======
+ "applicationUrl": "http://localhost:5136",
+>>>>>>> dev:DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Properties/launchSettings.json
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents/Providers/AzureBlobService.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Providers/AzureBlobService.cs
similarity index 93%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents/Providers/AzureBlobService.cs
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Providers/AzureBlobService.cs
index bc456f5..bfa2ca4 100644
--- a/DamageAssesmentApi/DamageAssesment.Api.Documents/Providers/AzureBlobService.cs
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Providers/AzureBlobService.cs
@@ -2,9 +2,9 @@
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
-using DamageAssesment.Api.Documents.Interfaces;
+using DamageAssesment.Api.DocuLinks.Interfaces;
-namespace DamageAssesment.Api.Documents.Providers
+namespace DamageAssesment.Api.DocuLinks.Providers
{
public class AzureBlobService: IAzureBlobService
{
diff --git a/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Providers/DoculinkProvider.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Providers/DoculinkProvider.cs
new file mode 100644
index 0000000..cf8bcfe
--- /dev/null
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Providers/DoculinkProvider.cs
@@ -0,0 +1,531 @@
+using AutoMapper;
+using DamageAssesment.Api.DocuLinks.Db;
+using DamageAssesment.Api.DocuLinks.Interfaces;
+using DamageAssesment.Api.DocuLinks.Models;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
+using System;
+using System.Diagnostics.Eventing.Reader;
+using System.Reflection.Metadata;
+using System.Xml.Linq;
+
+namespace DamageAssesment.Api.DocuLinks.Providers
+{
+
+
+ public class DoculinkProvider : IDoculinkProvider
+ {
+ private DoculinkDbContext DocumentDbContext;
+ private ILogger logger;
+ private IUploadService uploadservice;
+ private IMapper mapper;
+
+ public DoculinkProvider(DoculinkDbContext DocumentDbContext, ILogger logger, IMapper mapper, IUploadService uploadservice)
+ {
+ this.DocumentDbContext = DocumentDbContext;
+ this.logger = logger;
+ this.mapper = mapper;
+ this.uploadservice = uploadservice;
+ SeedData();
+ }
+
+
+
+ private void SeedData()
+ {
+ if (!DocumentDbContext.LinkTypes.Any())
+ {
+ DocumentDbContext.LinkTypes.Add(new Db.LinkType() { IsActive = true, CustomOrder = 1 });
+ DocumentDbContext.LinkTypes.Add(new Db.LinkType() { IsActive = true, CustomOrder = 2 });
+ DocumentDbContext.LinkTypes.Add(new Db.LinkType() { IsActive = true, CustomOrder = 3 });
+ DocumentDbContext.LinkTypes.Add(new Db.LinkType() { IsActive = true, CustomOrder = 4 });
+ DocumentDbContext.SaveChanges();
+ }
+ if (!DocumentDbContext.LinksTranslations.Any())
+ {
+ DocumentDbContext.LinksTranslations.Add(new Db.LinksTranslation() { TypeText = "Forms", Language = "en", LinkTypeId = 1 });
+ DocumentDbContext.LinksTranslations.Add(new Db.LinksTranslation() { TypeText = "Communiques", Language = "en", LinkTypeId = 2 });
+ DocumentDbContext.LinksTranslations.Add(new Db.LinksTranslation() { TypeText = "Memos", Language = "en", LinkTypeId = 3 });
+ DocumentDbContext.LinksTranslations.Add(new Db.LinksTranslation() { TypeText = "Trainings", Language = "en", LinkTypeId = 4 });
+ DocumentDbContext.LinksTranslations.Add(new Db.LinksTranslation() { TypeText = "Formularios", Language = "es", LinkTypeId = 1 });
+ DocumentDbContext.LinksTranslations.Add(new Db.LinksTranslation() { TypeText = "Comunicados", Language = "es", LinkTypeId = 2 });
+ DocumentDbContext.LinksTranslations.Add(new Db.LinksTranslation() { TypeText = "notas", Language = "es", LinkTypeId = 3 });
+ DocumentDbContext.LinksTranslations.Add(new Db.LinksTranslation() { TypeText = "Entrenamientos", Language = "es", LinkTypeId = 4 });
+ DocumentDbContext.LinksTranslations.Add(new Db.LinksTranslation() { TypeText = "Formes", Language = "fr", LinkTypeId = 1 });
+ DocumentDbContext.LinksTranslations.Add(new Db.LinksTranslation() { TypeText = "Communiqués", Language = "fr", LinkTypeId = 2 });
+ DocumentDbContext.LinksTranslations.Add(new Db.LinksTranslation() { TypeText = "Mémos", Language = "fr", LinkTypeId = 3 });
+ DocumentDbContext.LinksTranslations.Add(new Db.LinksTranslation() { TypeText = "Formations", Language = "fr", LinkTypeId = 4 });
+ DocumentDbContext.SaveChanges();
+ }
+ if (!DocumentDbContext.Documents.Any())
+ {
+ int counter = 0;
+ for (int i = 1; i <= 4; i++)
+ {
+ FileModel fileModel = new FileModel() { url = "www.google"+i+".com", IsAttachments = false, CustomOrder = 1 };
+ ReqDoculink documentInfo = new ReqDoculink() { linkTypeId = i,CustomOrder=i, Files = new List() { fileModel } };
+ Db.DoculinkTranslation documents = new Db.DoculinkTranslation { DocumentId = i, title = "Test"+i, description = "ss"+i, Language = "en" };
+ Models.Doculink document = uploadservice.UploadDocument(counter, documentInfo);
+ DocumentDbContext.Documents.Add(mapper.Map(document));
+ DocumentDbContext.SaveChanges();
+ DocumentDbContext.DocumentsTranslations.AddRange(documents);
+ var dbattachments = mapper.Map, List>(document.doclinksAttachments);
+ dbattachments.ForEach(a => a.DocumentId = i);
+ DocumentDbContext.DoclinksAttachments.AddRange(dbattachments);
+ DocumentDbContext.SaveChanges();
+ counter++;
+ }
+ }
+ }
+ public List GetDocumentTranslations(int id, string? language)
+ {
+ List QuestionTranslations;
+ if (string.IsNullOrEmpty(language))
+ {
+ QuestionTranslations = mapper.Map, List>(
+ DocumentDbContext.DocumentsTranslations.AsNoTracking().Where(a => a.DocumentId == id).ToList());
+ }
+ else
+ {
+ QuestionTranslations = mapper.Map, List>(
+ DocumentDbContext.DocumentsTranslations.AsNoTracking().Where(a => a.DocumentId == id && a.Language == language).ToList());
+ }
+ return QuestionTranslations;
+ }
+ public ResDoculink CreateMultiLanguageObject(List questions)
+ {
+ ResDoculink MultiLanguage = new ResDoculink();
+ Dictionary dicttitle = new Dictionary();
+ Dictionary dictdesc = new Dictionary();
+ foreach (Models.DoculinkTranslation item in questions)
+ {
+ dicttitle.Add(item.Language, item.title);
+ dictdesc.Add(item.Language, item.description);
+ }
+ MultiLanguage.titles = dicttitle;
+ MultiLanguage.description = dictdesc;
+ return MultiLanguage;
+ }
+ public List GetLinkTypeTranslations(int id, string? language)
+ {
+ List linksTranslations;
+ if (string.IsNullOrEmpty(language))
+ {
+ linksTranslations = mapper.Map, List>(
+ DocumentDbContext.LinksTranslations.AsNoTracking().Where(a => a.LinkTypeId == id).ToList());
+ }
+ else
+ {
+ linksTranslations = mapper.Map, List>(
+ DocumentDbContext.LinksTranslations.AsNoTracking().Where(a => a.LinkTypeId == id && a.Language == language).ToList());
+ }
+ return linksTranslations;
+ }
+ public object CreateMultiLanguageLinkTypeObject(List links)
+ {
+ object MultiLanguage = new object();
+ Dictionary dicttitle = new Dictionary();
+ foreach (Models.LinksTranslation item in links)
+ {
+ dicttitle.Add(item.Language, item.TypeText);
+ }
+ MultiLanguage = dicttitle;
+ return MultiLanguage;
+ }
+ public async Task<(bool IsSuccess, IEnumerable documents, string ErrorMessage)> GetdocumentsByLinkAsync(string? linkType, string? language, bool? isactive)
+ {
+
+ try
+ {
+ logger?.LogInformation("Query Question");
+ var documents = new List();
+ if (String.IsNullOrEmpty(linkType))
+ documents = await DocumentDbContext.Documents.AsNoTracking().Where(q => (isactive == null || q.IsActive == isactive.Value)).ToListAsync();
+ else
+ documents = await DocumentDbContext.Documents.AsNoTracking().Where(q => (isactive == null || q.IsActive == isactive.Value) &&
+ q.linkTypeId == (DocumentDbContext.LinksTranslations.AsNoTracking().Where(a => a.TypeText.ToLower() == linkType.ToLower()).Select(a => a.Id).FirstOrDefault())).ToListAsync();
+ if (documents != null)
+ {
+ var result = mapper.Map, List>(documents);
+ foreach (var item in result)
+ {
+ var multilan = CreateMultiLanguageObject(GetDocumentTranslations(item.Id, language));
+ item.titles = multilan.titles;
+ item.description = multilan.description;
+ item.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(item.linkTypeId, language));
+ item.doclinksAttachments = mapper.Map, List>(
+ DocumentDbContext.DoclinksAttachments.AsNoTracking().Where(a => a.DocumentId == item.Id).ToList());
+ }
+ return (true, result, null);
+ }
+ return (false, null, "Not found");
+ }
+ catch (Exception ex)
+ {
+ logger?.LogError(ex.ToString());
+ return (false, null, ex.Message);
+ }
+
+ }
+ //public async Task<(bool IsSuccess, IEnumerable documents, string ErrorMessage)> GetDocumnetsAsync(string? language)
+ //{
+
+ // try
+ // {
+ // logger?.LogInformation("Query Question");
+ // var documents = await DocumentDbContext.Documents.Include(a => a.LinkType).AsNoTracking().Where(q => q.IsActive).ToListAsync();
+ // if (documents != null)
+ // {
+ // logger?.LogInformation($"{documents.Count} Document(s) found");
+ // var result = mapper.Map, List>(documents);
+ // foreach (var item in result)
+ // {
+ // var multilan = CreateMultiLanguageObject(GetDocumentTranslations(item.Id, language));
+ // item.titles = multilan.titles;
+ // item.description = multilan.description;
+ // }
+ // return (true, result, null);
+ // }
+ // return (false, null, "Not found");
+ // }
+ // catch (Exception ex)
+ // {
+ // logger?.LogError(ex.ToString());
+ // return (false, null, ex.Message);
+ // }
+
+ //}
+ public async Task<(bool IsSuccess, Models.Doculink Document, string ErrorMessage)> GetDocumentByidAsync(int id)
+ {
+ try
+ {
+ logger?.LogInformation("Query LinkType");
+ var Document = await DocumentDbContext.Documents.AsNoTracking().FirstOrDefaultAsync(q => q.Id == id && q.IsActive);
+ if (Document != null)
+ {
+ logger?.LogInformation($"{Document} customer(s) found");
+ var result = mapper.Map(Document);
+ result.documentsTranslations = mapper.Map, List>(
+ DocumentDbContext.DocumentsTranslations.Where(a => a.DocumentId == result.Id).ToList());
+
+ result.doclinksAttachments = mapper.Map, List>(
+ DocumentDbContext.DoclinksAttachments.AsNoTracking().Where(a => a.DocumentId == id).ToList());
+ return (true, result, null);
+ }
+ return (false, null, "Not found");
+ }
+ catch (Exception ex)
+ {
+ logger?.LogError(ex.ToString());
+ return (false, null, ex.Message);
+ }
+ }
+ //added linktype filter
+ public async Task<(bool IsSuccess, Models.ResDoculink Document, string ErrorMessage)> GetDocumentAsync(int id, string? linkType, string? language)
+ {
+ try
+ {
+ logger?.LogInformation("Query LinkType");
+ //var Document = await DocumentDbContext.Documents.Include(a => a.LinkType).AsNoTracking().FirstOrDefaultAsync(q => q.Id == id && q.IsActive);
+ var Document = new Db.Doculink();
+ if (String.IsNullOrEmpty(linkType))
+ Document = await DocumentDbContext.Documents.AsNoTracking().Where(q => q.IsActive && q.Id == id).FirstOrDefaultAsync();
+ else
+ Document = await DocumentDbContext.Documents.AsNoTracking().Where(q => q.IsActive && q.Id == id &&
+ q.linkTypeId == (DocumentDbContext.LinksTranslations.AsNoTracking().Where(a => a.TypeText.ToLower() == linkType.ToLower()).Select(a => a.Id).FirstOrDefault())).FirstOrDefaultAsync();
+ if (Document != null)
+ {
+ logger?.LogInformation($"{Document} customer(s) found");
+ var result = mapper.Map(Document);
+ var multilan = CreateMultiLanguageObject(GetDocumentTranslations(result.Id, language));
+ result.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(result.linkTypeId, language));
+ result.titles = multilan.titles;
+ result.description = multilan.description;
+ result.doclinksAttachments = mapper.Map, List>(
+ DocumentDbContext.DoclinksAttachments.AsNoTracking().Where(a => a.DocumentId == id).ToList());
+ return (true, result, null);
+ }
+ return (false, null, "Not found");
+ }
+ catch (Exception ex)
+ {
+ logger?.LogError(ex.ToString());
+ return (false, null, ex.Message);
+ }
+ }
+ public async Task<(bool IsSuccess, Models.ResDoculink Document, string ErrorMessage)> PostDocumentAsync(Models.Doculink Document)
+ {
+ try
+ {
+ var document = mapper.Map(Document);
+ document.dateCreated = DateTime.Now; document.dateUpdated = DateTime.Now;
+ DocumentDbContext.Documents.Add(document);
+ DocumentDbContext.SaveChanges();
+ var dbtranslation = mapper.Map, List>(Document.documentsTranslations);
+ dbtranslation.ForEach(i => i.DocumentId = document.Id);
+ DocumentDbContext.DocumentsTranslations.AddRange(dbtranslation);
+ var dbattachments = mapper.Map, List>(Document.doclinksAttachments);
+ dbattachments.ForEach(i => i.DocumentId = document.Id);
+ DocumentDbContext.DoclinksAttachments.AddRange(dbattachments);
+ DocumentDbContext.SaveChanges();
+ var result = mapper.Map(document);
+ var multilan = CreateMultiLanguageObject(GetDocumentTranslations(document.Id, ""));
+ result.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(Document.linkTypeId, ""));
+ result.titles = multilan.titles;
+ result.description = multilan.description;
+ result.doclinksAttachments = Document.doclinksAttachments;
+ return (true, result, null);
+ }
+ catch (Exception ex)
+ {
+ logger?.LogError(ex.ToString());
+ return (false, null, ex.Message);
+ }
+ }
+
+ public async Task<(bool IsSuccess, Models.ResDoculink Document, string ErrorMessage)> UpdateDocumentAsync(int id, Models.Doculink Document)
+ {
+ try
+ {
+ if (Document != null)
+ {
+ var existing = DocumentDbContext.Documents.AsNoTracking().FirstOrDefault(x => x.Id == id);
+ if (existing != null)
+ {
+ Document.Id = existing.Id;
+ var document = mapper.Map(Document);
+ document.dateUpdated = DateTime.Now;
+ DocumentDbContext.Documents.Update(document);
+ DocumentDbContext.SaveChanges();
+ var oldtranslations = DocumentDbContext.DocumentsTranslations.Where(a => a.DocumentId == id).ToList();
+ if (oldtranslations != null)
+ DocumentDbContext.DocumentsTranslations.RemoveRange(oldtranslations);
+ var oldattachments = DocumentDbContext.DoclinksAttachments.Where(a => a.DocumentId == id).ToList();
+ if (oldattachments != null)
+ DocumentDbContext.DoclinksAttachments.RemoveRange(oldattachments);
+ var dbtranslation = mapper.Map, List>(Document.documentsTranslations);
+ dbtranslation.ForEach(i => i.DocumentId = Document.Id);
+ DocumentDbContext.DocumentsTranslations.AddRange(dbtranslation);
+ var dbattachments = mapper.Map, List>(Document.doclinksAttachments);
+ dbattachments.ForEach(i => i.DocumentId = document.Id);
+ DocumentDbContext.DoclinksAttachments.AddRange(dbattachments);
+ DocumentDbContext.SaveChanges();
+ var result = mapper.Map(document);
+ var multilan = CreateMultiLanguageObject(GetDocumentTranslations(document.Id, ""));
+ result.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(document.linkTypeId, ""));
+ result.titles = multilan.titles;
+ result.description = multilan.description;
+ result.doclinksAttachments = Document.doclinksAttachments;
+ return (true, result, "Successful");
+ }
+ else
+ {
+ logger?.LogInformation($"{Document} Not found");
+ return (false, null, "Not Found");
+ }
+ }
+ else
+ {
+ logger?.LogInformation($"{Document} Bad Request");
+ return (false, null, "Bad request");
+ }
+
+ }
+ catch (Exception ex)
+ {
+
+ logger?.LogError(ex.ToString());
+ return (false, null, ex.Message);
+ }
+ }
+ public async Task<(bool IsSuccess, Models.ResDoculink Document, string ErrorMessage)> DeleteDocumentAsync(int id)
+ {
+
+ try
+ {
+ Db.Doculink Document = DocumentDbContext.Documents.AsNoTracking().Where(a => a.Id == id).FirstOrDefault();
+ if (Document == null)
+ {
+ return (false, null, "Not Found");
+ }
+ var result = mapper.Map(Document);
+ var multilan = CreateMultiLanguageObject(GetDocumentTranslations(Document.Id, ""));
+ result.titles = multilan.titles;
+ result.description = multilan.description;
+ result.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(result.linkTypeId, ""));
+ result.doclinksAttachments = mapper.Map, List>(
+ DocumentDbContext.DoclinksAttachments.AsNoTracking().Where(a => a.DocumentId == id).ToList());
+ Document.IsActive = false;
+ DocumentDbContext.Documents.Update(Document);
+ DocumentDbContext.SaveChanges();
+ return (true, result, $"DocumentId {id} deleted Successfuly");
+ }
+ catch (Exception ex)
+ {
+
+ logger?.LogError(ex.ToString());
+ return (false, null, ex.Message);
+ }
+ }
+
+ public async Task<(bool IsSuccess, int counter, string message)> GetDocumentCounter()
+ {
+ try
+ {
+ int AttachmentId = DocumentDbContext.DoclinksAttachments.Max(a => a.Id);
+ return (true, AttachmentId, "");
+ }
+ catch (Exception ex)
+ {
+ return (false, 0, ex.Message);
+ }
+ }
+
+ //Link Type methods
+ public async Task<(bool IsSuccess, IEnumerable LinkTypes, string ErrorMessage)> GetLinkTypesAsync(string? language)
+ {
+
+ try
+ {
+ logger?.LogInformation("Query Question");
+ var LinkType = await DocumentDbContext.LinkTypes.AsNoTracking().Where(q => q.IsActive).ToListAsync();
+ if (LinkType != null)
+ {
+ logger?.LogInformation($"{LinkType.Count} LinkTypes(s) found");
+ var result = mapper.Map, IEnumerable>(LinkType);
+ foreach (var item in result)
+ {
+ item.titles = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(item.Id, language));
+ }
+ return (true, result, null);
+ }
+ return (false, null, "Not found");
+ }
+ catch (Exception ex)
+ {
+ logger?.LogError(ex.ToString());
+ return (false, null, ex.Message);
+ }
+
+ }
+ public async Task<(bool IsSuccess, Models.ResLinkType LinkType, string ErrorMessage)> GetLinkTypeAsync(int Id, string? language)
+ {
+ try
+ {
+ logger?.LogInformation("Query LinkType");
+ var LinkType = await DocumentDbContext.LinkTypes.AsNoTracking().FirstOrDefaultAsync(q => q.Id == Id && q.IsActive);
+ if (LinkType != null)
+ {
+ logger?.LogInformation($"{LinkType} customer(s) found");
+ var result = mapper.Map(LinkType);
+ result.titles = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(result.Id, language));
+ return (true, result, null);
+ }
+ return (false, null, "Not found");
+ }
+ catch (Exception ex)
+ {
+ logger?.LogError(ex.ToString());
+ return (false, null, ex.Message);
+ }
+ }
+ public async Task<(bool IsSuccess, Models.ResLinkType LinkType, string ErrorMessage)> PostLinkTypeAsync(Models.LinkType LinkType)
+ {
+ try
+ {
+ logger?.LogInformation("Query LinkType");
+ if (!LinkTypeExists(LinkType.Id))
+ {
+ var dbLink = mapper.Map(LinkType);
+ DocumentDbContext.LinkTypes.Add(dbLink);
+ DocumentDbContext.SaveChanges();
+ var dbtranslation = mapper.Map, List>(LinkType.linksTranslations);
+ dbtranslation.ForEach(i => i.LinkTypeId = dbLink.Id);
+ DocumentDbContext.LinksTranslations.AddRange(dbtranslation);
+ DocumentDbContext.SaveChanges();
+ var result = mapper.Map(dbLink);
+ result.titles = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(result.Id, ""));
+ return (true, result, null);
+ }
+ return (false, null, "LinkType is already exits");
+ }
+ catch (Exception ex)
+ {
+ logger?.LogError(ex.ToString());
+ return (false, null, ex.Message);
+ }
+ }
+ public async Task<(bool IsSuccess, Models.ResLinkType LinkType, string ErrorMessage)> UpdateLinkTypeAsync(int id, Models.LinkType LinkType)
+ {
+ try
+ {
+ if (LinkType != null)
+ {
+ var existing = DocumentDbContext.LinkTypes.AsNoTracking().FirstOrDefault(x => x.Id == id);
+ if (existing != null)
+ {
+ var dbLink = mapper.Map(LinkType);
+ DocumentDbContext.LinkTypes.Update(dbLink);
+ DocumentDbContext.SaveChanges();
+ var oldtranslations = DocumentDbContext.LinksTranslations.Where(a => a.LinkTypeId == id).ToList();
+ if (oldtranslations != null)
+ DocumentDbContext.LinksTranslations.RemoveRange(oldtranslations);
+ var dbtranslation = mapper.Map, List>(LinkType.linksTranslations);
+ dbtranslation.ForEach(i => i.LinkTypeId = dbLink.Id);
+ DocumentDbContext.LinksTranslations.AddRange(dbtranslation);
+ DocumentDbContext.SaveChanges();
+ var result = mapper.Map(dbLink);
+ result.titles = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(result.Id, ""));
+ return (true, result, "Successful");
+ }
+ else
+ {
+ logger?.LogInformation($"{LinkType} Not found");
+ return (false, null, "Not Found");
+ }
+ }
+ else
+ {
+ logger?.LogInformation($"{LinkType} Bad Request");
+ return (false, null, "Bad request");
+ }
+
+ }
+ catch (Exception ex)
+ {
+
+ logger?.LogError(ex.ToString());
+ return (false, null, ex.Message);
+ }
+ }
+ public async Task<(bool IsSuccess, Models.ResLinkType LinkType, string ErrorMessage)> DeleteLinkTypeAsync(int id)
+ {
+
+ try
+ {
+ Db.LinkType LinkType = DocumentDbContext.LinkTypes.AsNoTracking().Where(a => a.Id == id).FirstOrDefault();
+ if (LinkType == null)
+ {
+ return (false, null, "Not Found");
+ }
+ LinkType.IsActive = false;
+ var result = mapper.Map(LinkType);
+ result.titles = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(result.Id, ""));
+ DocumentDbContext.LinkTypes.Update(LinkType);
+ DocumentDbContext.SaveChanges();
+ return (true, result, $"LinkTypeId {id} deleted Successfuly");
+ }
+ catch (Exception ex)
+ {
+
+ logger?.LogError(ex.ToString());
+ return (false, null, ex.Message);
+ }
+ }
+ private bool LinkTypeExists(int id)
+ {
+ return DocumentDbContext.LinkTypes.AsNoTracking().Count(e => e.Id == id) > 0;
+ }
+ }
+}
diff --git a/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Providers/UploadService.cs b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Providers/UploadService.cs
new file mode 100644
index 0000000..807a2e0
--- /dev/null
+++ b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Providers/UploadService.cs
@@ -0,0 +1,142 @@
+using AutoMapper;
+using Azure;
+using DamageAssesment.Api.DocuLinks.Db;
+using DamageAssesment.Api.DocuLinks.Interfaces;
+using DamageAssesment.Api.DocuLinks.Models;
+using Microsoft.AspNetCore.Http;
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
+using System.Diagnostics.Metrics;
+using System.Net.Http;
+using System.Security.AccessControl;
+using System.Security.Principal;
+
+namespace DamageAssesment.Api.DocuLinks.Providers
+{
+ public class UploadService : IUploadService
+ {
+ private ILogger logger;
+ private IMapper mapper;
+ private string uploadpath = "";
+ private string Deletepath = "";
+ public UploadService(IConfiguration configuration, ILogger logger, IMapper mapper)
+ {
+ this.logger = logger;
+ this.mapper = mapper;
+ uploadpath = configuration.GetValue("Fileupload:folderpath");
+ Deletepath = configuration.GetValue("Fileupload:Deletepath");
+ }
+
+ public Models.Doculink UploadDocument(int counter, ReqDoculink documentInfo)
+ {
+ Models.Doculink Documents = new Models.Doculink();
+ List attachments = new List();
+ try
+ {
+ string path = "", UserfileName="";
+ var fullDirectoryPath = Path.Combine(Directory.GetCurrentDirectory(), uploadpath);
+ if (!Directory.Exists(fullDirectoryPath)) //Create deirectory if does not exist
+ Directory.CreateDirectory(fullDirectoryPath);
+ if (documentInfo.Files != null)
+ {
+
+ foreach (var item in documentInfo.Files)
+ {
+ counter++;
+ if (item.IsAttachments)
+ {
+ UserfileName = Path.GetFileName(item.FileName);
+ var fileName = String.Format("Document_{0}{1}", counter, item.FileExtension);
+ path = Path.Combine(fullDirectoryPath, fileName);
+ File.WriteAllBytes(path, Convert.FromBase64String(item.FileContent));
+ }
+ else
+ path = item.url;
+ attachments.Add(new Models.DoculinkAttachments { docName=UserfileName,Path=path,IsAttachments=item.IsAttachments,CustomOrder=item.CustomOrder });
+ }
+ }
+ Documents=new Models.Doculink (){ linkTypeId = documentInfo.linkTypeId,
+ documentsTranslations = documentInfo.documentsTranslations,doclinksAttachments=attachments,
+ IsDeleted=false,CustomOrder=documentInfo.CustomOrder, IsActive =true};
+
+ return Documents;
+ }
+ catch (Exception ex) {
+ return new Models.Doculink();
+ }
+
+
+ }
+ public Models.Doculink UpdateDocuments(int counter, Models.Doculink document, ReqDoculink documentInfo)
+ {
+ try
+ {
+ foreach (var item in document.doclinksAttachments)
+ {
+ Movefile(item.Path);
+ }
+ var fullDirectoryPath = Path.Combine(Directory.GetCurrentDirectory(), uploadpath);
+ if (!Directory.Exists(fullDirectoryPath)) //Create deirectory if does not exist
+ Directory.CreateDirectory(fullDirectoryPath);
+
+ string path = "", UserfileName = "";
+ List attachments = new List();
+ foreach (var item in documentInfo.Files)
+ {
+ counter++;
+ if (item.IsAttachments)
+ {
+ UserfileName = Path.GetFileName(item.FileName);
+ var fileName = String.Format("Document_{0}{1}", counter, item.FileExtension);
+ path = Path.Combine(fullDirectoryPath, fileName);
+ File.WriteAllBytes(path, Convert.FromBase64String(item.FileContent));
+ }
+ else
+ path = item.url;
+ attachments.Add(new Models.DoculinkAttachments { docName = UserfileName, Path = path,IsAttachments=item.IsAttachments,CustomOrder=item.CustomOrder });
+ }
+ Models.Doculink Documents = new Models.Doculink()
+ {
+ Id = documentInfo.Id,
+ linkTypeId = documentInfo.linkTypeId,
+ documentsTranslations=documentInfo.documentsTranslations,
+ IsActive = true,
+ IsDeleted=false,
+ CustomOrder = documentInfo.CustomOrder,
+ doclinksAttachments = attachments
+ };
+
+ return Documents;
+ }
+
+ catch (Exception ex) {
+ return new Models.Doculink();
+ }
+ }
+ public void Deletefile(string path)
+ {
+ if (path != "")
+ {
+ FileInfo file = new FileInfo(path);
+ if (file?.Exists??false)//check file exsit or not
+ {
+ file.Delete();
+ }
+ }
+ }
+ public void Movefile(string path)
+ {
+ if (path != "")
+ {
+ var pathToSave = Path.Combine(Directory.GetCurrentDirectory(), Deletepath);
+ if (!Directory.Exists(pathToSave)) //Create deirectory if does not exist
+ Directory.CreateDirectory(pathToSave);
+ FileInfo file = new FileInfo(path);
+ if (file?.Exists ?? false)//check file exsit or not
+ {
+ string filename = file.Name.Replace(file.Extension, " ") + DateTime.Now.ToShortDateString().Replace("/","_") + file.Extension;
+ file.MoveTo(pathToSave+"\\"+ filename);
+ }
+ }
+ }
+ }
+}
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents/appsettings.Development.json b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/appsettings.Development.json
similarity index 100%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents/appsettings.Development.json
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks/appsettings.Development.json
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents/appsettings.json b/DamageAssesmentApi/DamageAssesment.Api.DocuLinks/appsettings.json
similarity index 100%
rename from DamageAssesmentApi/DamageAssesment.Api.Documents/appsettings.json
rename to DamageAssesmentApi/DamageAssesment.Api.DocuLinks/appsettings.json
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents.Test/LinkTypeMockData.cs b/DamageAssesmentApi/DamageAssesment.Api.Documents.Test/LinkTypeMockData.cs
deleted file mode 100644
index 644b7d5..0000000
--- a/DamageAssesmentApi/DamageAssesment.Api.Documents.Test/LinkTypeMockData.cs
+++ /dev/null
@@ -1,61 +0,0 @@
-using DamageAssesment.Api.Documents.Models;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net.Mail;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace DamageAssesment.Api.Documents.Test
-{
- public class LinkTypeMockData
- {
-
- public static async Task<(bool, List, string)> getOkResponse()
- {
- List list = new List();
-
- for (int i = 1; i < 4; i++)
- {
- list.Add(new Documents.Models.LinkType()
- {
- Id = i,
- TypeText = "sample"+i,
- IsActive = true
- });
- }
- return (true, list, null);
- }
- public static async Task<(bool, Documents.Models.LinkType, string)> getOkResponse(int Id)
- {
- var Documents = await getOkResponse();
- var Document = Documents.Item2.FirstOrDefault(s => s.Id == Id);
- return (true, Document, null);
- }
- public static async Task<(bool, Documents.Models.LinkType, string)> getBadRequestResponse()
- {
- return (false, null, "Bad Request");
- }
-
- public static async Task<(bool, Documents.Models.LinkType, string)> getNotFoundResponse()
- {
- return (false, null, "Not Found");
- }
- public static async Task<(bool, IEnumerable, string)> getNoContentResponse()
- {
- IEnumerable list = new List();
- return (false, list, null);
- }
-
- public static async Task getInputLinkData(int id)
- {
- return new Models.LinkType
- {
- Id = id,
- TypeText = "sample",
- IsActive = true
- };
- }
-
- }
-}
diff --git a/DamageAssesmentApi/DamageAssesment.Api.Documents.Test/MockData.cs b/DamageAssesmentApi/DamageAssesment.Api.Documents.Test/MockData.cs
deleted file mode 100644
index e1d3f65..0000000
--- a/DamageAssesmentApi/DamageAssesment.Api.Documents.Test/MockData.cs
+++ /dev/null
@@ -1,122 +0,0 @@
-using DamageAssesment.Api.Documents.Models;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net.Mail;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace DamageAssesment.Api.Documents.Test
-{
- public class MockData
- {
-
- public static async Task<(bool, List, string)> getOkResponse()
- {
- List list = new List