fixed survey issue in response level, and added logic for start and end date as optional date
This commit is contained in:
commit
227795aeda
@ -6,11 +6,11 @@ namespace DamageAssesment.Api.DocuLinks.Interfaces
|
||||
{
|
||||
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<Models.ResDoculink> documents, string ErrorMessage)> GetDocumnetsAsync(string? language);
|
||||
// Task<(bool IsSuccess, IEnumerable<Models.ResDoculink> documents, string ErrorMessage)> GetDocumnetsAsync(string? language);
|
||||
Task<(bool IsSuccess, IEnumerable<Models.ResDoculink> documents, string ErrorMessage)> GetdocumentsByLinkAsync(string? linkType, string? language, bool? isactive);
|
||||
Task<(bool IsSuccess, IEnumerable<Models.ResDoculink> documents, string ErrorMessage)> GetdocumentsByLinkTypeIdAsync(int? linkTypeId, 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)> 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();
|
||||
|
||||
|
@ -1,95 +0,0 @@
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using DamageAssesment.Api.DocuLinks.Db;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Metadata;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace DamageAssesment.Api.DocuLinks.Migrations
|
||||
{
|
||||
[DbContext(typeof(DoculinkDbContext))]
|
||||
[Migration("20230828165655_InitialDocumentCreate")]
|
||||
partial class InitialDocumentCreate
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "7.0.9")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 128);
|
||||
|
||||
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
|
||||
|
||||
modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.Document", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<bool>("IsActive")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<string>("Path")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<DateTime>("dateCreated")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<DateTime>("dateUpdated")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("description")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("docName")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<int>("linkTypeId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("title")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("url")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Documents");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.LinkType", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<bool>("IsActive")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<string>("TypeText")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("LinkTypes");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
@ -1,60 +0,0 @@
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace DamageAssesment.Api.DocuLinks.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class InitialDocumentCreate : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.CreateTable(
|
||||
name: "Documents",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "int", nullable: false)
|
||||
.Annotation("SqlServer:Identity", "1, 1"),
|
||||
title = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
||||
linkTypeId = table.Column<int>(type: "int", nullable: false),
|
||||
description = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
||||
docName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
||||
url = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
||||
Path = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
||||
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
||||
dateCreated = table.Column<DateTime>(type: "datetime2", nullable: false),
|
||||
dateUpdated = table.Column<DateTime>(type: "datetime2", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_Documents", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "LinkTypes",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "int", nullable: false)
|
||||
.Annotation("SqlServer:Identity", "1, 1"),
|
||||
TypeText = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
||||
IsActive = table.Column<bool>(type: "bit", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_LinkTypes", x => x.Id);
|
||||
});
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "Documents");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "LinkTypes");
|
||||
}
|
||||
}
|
||||
}
|
@ -1,118 +0,0 @@
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using DamageAssesment.Api.DocuLinks.Db;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Metadata;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace DamageAssesment.Api.DocuLinks.Migrations
|
||||
{
|
||||
[DbContext(typeof(DoculinkDbContext))]
|
||||
[Migration("20230830200432_DocumentTranslation")]
|
||||
partial class DocumentTranslation
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "7.0.9")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 128);
|
||||
|
||||
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
|
||||
|
||||
modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.Document", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<bool>("IsActive")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<string>("Path")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<DateTime>("dateCreated")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<DateTime>("dateUpdated")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("docName")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<int>("linkTypeId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("url")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Documents");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.DocumentsTranslation", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<int>("DocumentId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("Language")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("description")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("title")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("DocumentsTranslations");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.LinkType", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<bool>("IsActive")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<bool>("IsAttachment")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<string>("TypeText")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("LinkTypes");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
@ -1,70 +0,0 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace DamageAssesment.Api.DocuLinks.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class DocumentTranslation : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropColumn(
|
||||
name: "description",
|
||||
table: "Documents");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "title",
|
||||
table: "Documents");
|
||||
|
||||
migrationBuilder.AddColumn<bool>(
|
||||
name: "IsAttachment",
|
||||
table: "LinkTypes",
|
||||
type: "bit",
|
||||
nullable: false,
|
||||
defaultValue: false);
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "DocumentsTranslations",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "int", nullable: false)
|
||||
.Annotation("SqlServer:Identity", "1, 1"),
|
||||
DocumentId = table.Column<int>(type: "int", nullable: false),
|
||||
title = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
||||
description = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
||||
Language = table.Column<string>(type: "nvarchar(max)", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_DocumentsTranslations", x => x.Id);
|
||||
});
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "DocumentsTranslations");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "IsAttachment",
|
||||
table: "LinkTypes");
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "description",
|
||||
table: "Documents",
|
||||
type: "nvarchar(max)",
|
||||
nullable: false,
|
||||
defaultValue: "");
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "title",
|
||||
table: "Documents",
|
||||
type: "nvarchar(max)",
|
||||
nullable: false,
|
||||
defaultValue: "");
|
||||
}
|
||||
}
|
||||
}
|
@ -1,115 +0,0 @@
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using DamageAssesment.Api.DocuLinks.Db;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Metadata;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace DamageAssesment.Api.DocuLinks.Migrations
|
||||
{
|
||||
[DbContext(typeof(DoculinkDbContext))]
|
||||
partial class DocumentDbContextModelSnapshot : ModelSnapshot
|
||||
{
|
||||
protected override void BuildModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "7.0.9")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 128);
|
||||
|
||||
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
|
||||
|
||||
modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.Document", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<bool>("IsActive")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<string>("Path")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<DateTime>("dateCreated")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<DateTime>("dateUpdated")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("docName")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<int>("linkTypeId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("url")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Documents");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.DocumentsTranslation", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<int>("DocumentId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("Language")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("description")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("title")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("DocumentsTranslations");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.LinkType", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<bool>("IsActive")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<bool>("IsAttachment")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<string>("TypeText")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("LinkTypes");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
@ -195,7 +195,7 @@ namespace DamageAssesment.Api.DocuLinks.Providers
|
||||
item.doclinksAttachments = mapper.Map<List<Db.DoculinkAttachments>, List<Models.DoculinkAttachments>>(
|
||||
DocumentDbContext.DoclinksAttachments.AsNoTracking().Where(a => a.DocumentId == item.Id).ToList());
|
||||
}
|
||||
//List<ResDoculinks> doculinks = result.GroupBy(a => a.linkTypeId).Select(a => new ResDoculinks() { linkTypeId = a.Key, doculinks = a.ToList() }).ToList();
|
||||
// List<ResDoculinks> doculinks = result.GroupBy(a => a.linkTypeId).Select(a => new ResDoculinks() { linkTypeId = a.Key, doculinks = a.ToList() }).ToList();
|
||||
return (true, result, null);
|
||||
}
|
||||
return (false, null, "Not found");
|
||||
@ -231,7 +231,7 @@ namespace DamageAssesment.Api.DocuLinks.Providers
|
||||
item.doclinksAttachments = mapper.Map<List<Db.DoculinkAttachments>, List<Models.DoculinkAttachments>>(
|
||||
DocumentDbContext.DoclinksAttachments.AsNoTracking().Where(a => a.DocumentId == item.Id).ToList());
|
||||
}
|
||||
// List<ResDoculinks> doculinks = result.GroupBy(a => a.linkTypeId).Select(a => new ResDoculinks() { linkTypeId = a.Key, doculinks = a.ToList() }).ToList();
|
||||
//List<ResDoculinks> doculinks = result.GroupBy(a => a.linkTypeId).Select(a => new ResDoculinks() { linkTypeId = a.Key, doculinks = a.ToList() }).ToList();
|
||||
return (true, result, null);
|
||||
}
|
||||
return (false, null, "Not found");
|
||||
|
@ -12,9 +12,11 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
public class SurveyResponsesServiceTest
|
||||
{
|
||||
Mock<ISurveysResponse> mockSurveyResponseService;
|
||||
Mock<IExcelExportService> mockExcelExportService;
|
||||
public SurveyResponsesServiceTest()
|
||||
{
|
||||
mockSurveyResponseService = new Mock<ISurveysResponse>();
|
||||
mockExcelExportService = new Mock<IExcelExportService>();
|
||||
}
|
||||
|
||||
[Fact(DisplayName = "Get Responses - Ok case")]
|
||||
@ -23,7 +25,7 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject();
|
||||
var mockResponse = await MockData.getOkResponse(mockRequestObject);
|
||||
mockSurveyResponseService.Setup(service => service.GetSurveyResponsesAsync(1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (OkObjectResult)await surveyResponseProvider.GetSurveyResponsesAsync(1);
|
||||
Assert.Equal(200, result.StatusCode);
|
||||
}
|
||||
@ -33,7 +35,7 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
{
|
||||
var mockResponse = await MockData.getResponse();
|
||||
mockSurveyResponseService.Setup(service => service.GetSurveyResponsesAsync(1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (BadRequestObjectResult)await surveyResponseProvider.GetSurveyResponsesAsync(1);
|
||||
Assert.Equal(400, result.StatusCode);
|
||||
}
|
||||
@ -43,9 +45,9 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
{
|
||||
SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject();
|
||||
var mockResponse = await MockData.getOkResponse();
|
||||
mockSurveyResponseService.Setup(service => service.GetSurveyResponsesBySurveyAsync(1,1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
var result = (OkObjectResult)await surveyResponseProvider.GetSurveyResponsesAsync(1,1);
|
||||
mockSurveyResponseService.Setup(service => service.GetSurveyResponsesBySurveyAsync(1, 1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (OkObjectResult)await surveyResponseProvider.GetSurveyResponsesAsync(1, 1);
|
||||
Assert.Equal(200, result.StatusCode);
|
||||
}
|
||||
|
||||
@ -53,9 +55,9 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
public async Task GetSurveyResponsesBySurveyAsync_ShouldReturnStatusCode204()
|
||||
{
|
||||
var mockResponse = await MockData.getResponse();
|
||||
mockSurveyResponseService.Setup(service => service.GetSurveyResponsesBySurveyAsync(1,1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
var result = (NoContentResult)await surveyResponseProvider.GetSurveyResponsesAsync(1,1);
|
||||
mockSurveyResponseService.Setup(service => service.GetSurveyResponsesBySurveyAsync(1, 1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (NoContentResult)await surveyResponseProvider.GetSurveyResponsesAsync(1, 1);
|
||||
Assert.Equal(204, result.StatusCode);
|
||||
}
|
||||
|
||||
@ -67,9 +69,9 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
{
|
||||
SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject();
|
||||
var mockResponse = await MockData.getOkResponse();
|
||||
mockSurveyResponseService.Setup(service => service.GetSurveyResponsesBySurveyAndLocationAsync(1, 1,1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
var result = (OkObjectResult)await surveyResponseProvider.GetSurveyResponsesBySurveyAndLocationAsync(1, 1,1);
|
||||
mockSurveyResponseService.Setup(service => service.GetSurveyResponsesBySurveyAndLocationAsync(1, 1, 1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (OkObjectResult)await surveyResponseProvider.GetSurveyResponsesBySurveyAndLocationAsync(1, 1, 1);
|
||||
Assert.Equal(200, result.StatusCode);
|
||||
}
|
||||
|
||||
@ -78,7 +80,7 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
{
|
||||
var mockResponse = await MockData.getResponse();
|
||||
mockSurveyResponseService.Setup(service => service.GetSurveyResponsesBySurveyAndLocationAsync(1, 1, 1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (NoContentResult)await surveyResponseProvider.GetSurveyResponsesBySurveyAndLocationAsync(1, 1, 1);
|
||||
Assert.Equal(204, result.StatusCode);
|
||||
}
|
||||
@ -88,9 +90,9 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
{
|
||||
SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject();
|
||||
var mockResponse = await MockData.getOkResponse();
|
||||
mockSurveyResponseService.Setup(service => service.GetResponsesByAnswerAsync(1, 1, "Yes",1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
var result = (OkObjectResult)await surveyResponseProvider.GetSurveyResponsesByAnswerAsyncAsync(1, 1, "Yes",1);
|
||||
mockSurveyResponseService.Setup(service => service.GetResponsesByAnswerAsync(1, 1, "Yes", 1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (OkObjectResult)await surveyResponseProvider.GetSurveyResponsesByAnswerAsyncAsync(1, 1, "Yes", 1);
|
||||
Assert.Equal(200, result.StatusCode);
|
||||
}
|
||||
|
||||
@ -99,8 +101,8 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
{
|
||||
var mockResponse = await MockData.getResponse();
|
||||
mockSurveyResponseService.Setup(service => service.GetResponsesByAnswerAsync(1, 1, "Yes", 1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
var result = (NoContentResult)await surveyResponseProvider.GetSurveyResponsesByAnswerAsyncAsync(1, 1, "Yes",1);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (NoContentResult)await surveyResponseProvider.GetSurveyResponsesByAnswerAsyncAsync(1, 1, "Yes", 1);
|
||||
Assert.Equal(204, result.StatusCode);
|
||||
}
|
||||
|
||||
@ -110,8 +112,8 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
{
|
||||
SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject();
|
||||
var mockResponse = await MockData.getOkResponse();
|
||||
mockSurveyResponseService.Setup(service => service.GetAnswersByRegionAsync(1,1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
mockSurveyResponseService.Setup(service => service.GetAnswersByRegionAsync(1, 1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (OkObjectResult)await surveyResponseProvider.GetAnswersByRegionAsync(1, 1);
|
||||
Assert.Equal(200, result.StatusCode);
|
||||
}
|
||||
@ -121,7 +123,7 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
{
|
||||
var mockResponse = await MockData.getResponse();
|
||||
mockSurveyResponseService.Setup(service => service.GetAnswersByRegionAsync(1, 1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (NoContentResult)await surveyResponseProvider.GetAnswersByRegionAsync(1, 1);
|
||||
Assert.Equal(204, result.StatusCode);
|
||||
}
|
||||
@ -132,7 +134,7 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject();
|
||||
var mockResponse = await MockData.getOkResponse();
|
||||
mockSurveyResponseService.Setup(service => service.GetSurveyResponsesByMaintenanceCenterAsync(1, 1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (OkObjectResult)await surveyResponseProvider.GetAnswersByMaintenaceCentersync(1, 1);
|
||||
Assert.Equal(200, result.StatusCode);
|
||||
}
|
||||
@ -142,7 +144,7 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
{
|
||||
var mockResponse = await MockData.getResponse();
|
||||
mockSurveyResponseService.Setup(service => service.GetSurveyResponsesByMaintenanceCenterAsync(1, 1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (NoContentResult)await surveyResponseProvider.GetAnswersByMaintenaceCentersync(1, 1);
|
||||
Assert.Equal(204, result.StatusCode);
|
||||
}
|
||||
@ -153,7 +155,7 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject();
|
||||
var mockResponse = await MockData.getOkResponse();
|
||||
mockSurveyResponseService.Setup(service => service.GetSurveyResponseByIdAsync(1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (OkObjectResult)await surveyResponseProvider.GetSurveyResponseByIdAsync(1);
|
||||
Assert.Equal(200, result.StatusCode);
|
||||
}
|
||||
@ -163,7 +165,7 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
{
|
||||
var mockResponse = await MockData.getResponse();
|
||||
mockSurveyResponseService.Setup(service => service.GetSurveyResponseByIdAsync(1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (NoContentResult)await surveyResponseProvider.GetSurveyResponseByIdAsync(1);
|
||||
Assert.Equal(204, result.StatusCode);
|
||||
}
|
||||
@ -175,7 +177,7 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject();
|
||||
var mockResponse = await MockData.getOkResponse(mockRequestObject);
|
||||
mockSurveyResponseService.Setup(service => service.PostSurveyResponseAsync(mockRequestObject)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (OkObjectResult)await surveyResponseController.PostSurveysAsync(mockRequestObject);
|
||||
Assert.Equal(200, result.StatusCode);
|
||||
}
|
||||
@ -186,7 +188,7 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject();
|
||||
var mockResponse = await MockData.getResponse();
|
||||
mockSurveyResponseService.Setup(service => service.PostSurveyResponseAsync(mockRequestObject)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (BadRequestObjectResult)await surveyResponseController.PostSurveysAsync(mockRequestObject);
|
||||
Assert.Equal(400, result.StatusCode);
|
||||
}
|
||||
@ -197,7 +199,7 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject();
|
||||
var mockResponse = await MockData.getOkResponse(mockRequestObject);
|
||||
mockSurveyResponseService.Setup(service => service.PutSurveyResponseAsync(1, mockRequestObject)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (OkObjectResult)await surveyResponseController.PutSurveyResponseAsync(1, mockRequestObject);
|
||||
Assert.Equal(200, result.StatusCode);
|
||||
}
|
||||
@ -208,7 +210,7 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject();
|
||||
var mockResponse = await MockData.getResponse();
|
||||
mockSurveyResponseService.Setup(service => service.PutSurveyResponseAsync(1, mockRequestObject)).ReturnsAsync(mockResponse); ;
|
||||
var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (BadRequestObjectResult)await surveyResponseController.PutSurveyResponseAsync(1, mockRequestObject);
|
||||
Assert.Equal(400, result.StatusCode);
|
||||
}
|
||||
@ -219,7 +221,7 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject();
|
||||
var mockResponse = await MockData.getOkResponse(mockRequestObject);
|
||||
mockSurveyResponseService.Setup(service => service.DeleteSurveyResponseAsync(1)).ReturnsAsync(mockResponse);
|
||||
var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (OkObjectResult)await surveyResponseController.DeleteSurveyResponseAsync(1);
|
||||
Assert.Equal(200, result.StatusCode);
|
||||
}
|
||||
@ -229,7 +231,7 @@ namespace DamageAssesment.SurveyResponses.Test
|
||||
{
|
||||
var mockResponse = await MockData.getResponse();
|
||||
mockSurveyResponseService.Setup(service => service.DeleteSurveyResponseAsync(1)).ReturnsAsync(mockResponse); ;
|
||||
var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object);
|
||||
var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object);
|
||||
var result = (NotFoundResult)await surveyResponseController.DeleteSurveyResponseAsync(1);
|
||||
Assert.Equal(404, result.StatusCode);
|
||||
}
|
||||
|
@ -8,10 +8,12 @@ namespace DamageAssesment.Api.Responses.Controllers
|
||||
public class SurveyResponsesController : ControllerBase
|
||||
{
|
||||
private readonly ISurveysResponse surveyResponseProvider;
|
||||
private readonly IExcelExportService excelExportService;
|
||||
|
||||
public SurveyResponsesController(ISurveysResponse surveyResponseProvider)
|
||||
public SurveyResponsesController(ISurveysResponse surveyResponseProvider, IExcelExportService excelExportService)
|
||||
{
|
||||
this.surveyResponseProvider = surveyResponseProvider;
|
||||
this.excelExportService = excelExportService;
|
||||
}
|
||||
/// <summary>
|
||||
/// GET request for retrieving survey responses.
|
||||
@ -57,9 +59,9 @@ namespace DamageAssesment.Api.Responses.Controllers
|
||||
[Route("responses/{surveyid:int}/{locationid:int}/{employeeid:int}")]
|
||||
[Route("responses/{surveyid:int}/{locationid:int}")]
|
||||
[HttpGet]
|
||||
public async Task<ActionResult> GetSurveyResponsesBySurveyAndLocationAsync(int surveyid, int locationid,int? employeeid)
|
||||
public async Task<ActionResult> GetSurveyResponsesBySurveyAndLocationAsync(int surveyid, int locationid, int? employeeid)
|
||||
{
|
||||
var result = await this.surveyResponseProvider.GetSurveyResponsesBySurveyAndLocationAsync(surveyid, locationid,employeeid ?? 0);
|
||||
var result = await this.surveyResponseProvider.GetSurveyResponsesBySurveyAndLocationAsync(surveyid, locationid, employeeid ?? 0);
|
||||
if (result.IsSuccess)
|
||||
{
|
||||
return Ok(result.SurveyResponses);
|
||||
@ -198,11 +200,15 @@ namespace DamageAssesment.Api.Responses.Controllers
|
||||
else
|
||||
return BadRequest(result.ErrorMessage);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get All active surveys .
|
||||
/// </summary>
|
||||
[Route("responses/surveys/active")]
|
||||
[Route("responses/surveys/active/{language:alpha}")]
|
||||
[Route("responses/surveys/active/{employeeid:int}")]
|
||||
[Route("responses/surveys/active/{employeeid:int}/{language:alpha}")]
|
||||
[HttpGet]
|
||||
public async Task<ActionResult> GetActiveSurveysAsync(int employeeid, string? language)
|
||||
public async Task<ActionResult> GetActiveSurveysAsync(int? employeeid, string? language)
|
||||
{
|
||||
var result = await this.surveyResponseProvider.GetActiveSurveysAsync(employeeid, language);
|
||||
if (result.IsSuccess)
|
||||
@ -211,11 +217,45 @@ namespace DamageAssesment.Api.Responses.Controllers
|
||||
}
|
||||
return NoContent();
|
||||
}
|
||||
/// <summary>
|
||||
/// Export all survey response data based on survey id.
|
||||
/// </summary>
|
||||
[HttpGet]
|
||||
[Route("responses/surveys/export/{surveyid}")]
|
||||
public async Task<ActionResult> GetExcelSurveysAsync(int surveyid, string language, bool IsAdmin = false)
|
||||
{
|
||||
var result = await this.surveyResponseProvider.ExportSurveyResponsesAsync(surveyid, language, IsAdmin);
|
||||
if (result.IsSuccess && result.surveyResponses.Count > 0)
|
||||
{
|
||||
|
||||
byte[] fileContents = excelExportService.ExportToExcel<object>(result.surveyResponses);
|
||||
return File(fileContents, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "data.xlsx");
|
||||
//return Ok(result.Surveys);
|
||||
}
|
||||
return NoContent();
|
||||
}
|
||||
//[Route("responses/surveys/active")]
|
||||
//[Route("responses/surveys/active/{language:alpha}")]
|
||||
//[HttpGet]
|
||||
//public async Task<ActionResult> GetActiveSurveysAsync( string? language)
|
||||
//{
|
||||
// var result = await this.surveyResponseProvider.GetActiveSurveysAsync(null, language);
|
||||
// if (result.IsSuccess)
|
||||
// {
|
||||
// return Ok(result.Surveys);
|
||||
// }
|
||||
// return NoContent();
|
||||
//}
|
||||
|
||||
/// <summary>
|
||||
/// Get all historical surveys .
|
||||
/// </summary>
|
||||
[Route("responses/surveys/historic")]
|
||||
[Route("responses/surveys/historic/{language:alpha}")]
|
||||
[Route("responses/surveys/historic/{employeeid:int}")]
|
||||
[Route("responses/surveys/historic/{employeeid:int}/{language:alpha}")]
|
||||
[HttpGet]
|
||||
public async Task<ActionResult> GetHistoricSurveysAsync(int employeeid, string? language)
|
||||
public async Task<ActionResult> GetHistoricSurveysAsync(int? employeeid, string? language)
|
||||
{
|
||||
var result = await this.surveyResponseProvider.GetHistoricSurveysAsync(employeeid, language);
|
||||
if (result.IsSuccess)
|
||||
|
@ -9,6 +9,7 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" />
|
||||
<PackageReference Include="EPPlus" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" />
|
||||
|
@ -0,0 +1,7 @@
|
||||
namespace DamageAssesment.Api.Responses.Interfaces
|
||||
{
|
||||
public interface IExcelExportService
|
||||
{
|
||||
public byte[] ExportToExcel<T1>(List<object> responses);
|
||||
}
|
||||
}
|
@ -4,8 +4,9 @@ namespace DamageAssesment.Api.Responses.Interfaces
|
||||
{
|
||||
public interface IQuestionServiceProvider
|
||||
{
|
||||
Task<List<Question>> getQuestionsAsync();
|
||||
Task<List<Question>> getQuestionsAsync(string language);
|
||||
Task<List<SurveyQuestions>> getSurveyQuestionsAsync(int surveyId);
|
||||
Task<Question> getQuestionsAsync(int questionId);
|
||||
Task<List<QuestionCategory>> GetQuestionCategoriesAsync(string? language);
|
||||
}
|
||||
}
|
||||
|
@ -7,10 +7,11 @@ namespace DamageAssesment.Api.Responses.Interfaces
|
||||
{
|
||||
Task<(bool IsSuccess, dynamic Answers, string ErrorMessage)> GetAnswersByRegionAsync(int surveyId, int employeeid);
|
||||
Task<(bool IsSuccess, Models.SurveyResponse SurveyResponse, string ErrorMessage)> PostSurveyResponseAsync(Models.SurveyResponse surveyResponse);
|
||||
// Task<(bool IsSuccess,dynamic surveyResponses, string ErrorMessage)> GetSurveyResponseAsync(int responseId);
|
||||
// Task<(bool IsSuccess,dynamic surveyResponses, string ErrorMessage)> GetSurveyResponseAsync(int responseId);
|
||||
Task<(bool IsSuccess, dynamic surveyResponses, string ErrorMessage)> GetSurveyResponsesAsync(int employeeid);
|
||||
Task<(bool IsSuccess, dynamic Surveys, string ErrorMessage)> GetActiveSurveysAsync(int employeeid, string language);
|
||||
Task<(bool IsSuccess, dynamic Surveys, string ErrorMessage)> GetHistoricSurveysAsync(int employeeid, string language);
|
||||
Task<(bool IsSuccess, List<object> surveyResponses, string ErrorMessage)> ExportSurveyResponsesAsync(int surveyId, string language, bool IsAdmin);
|
||||
Task<(bool IsSuccess, dynamic Surveys, string ErrorMessage)> GetActiveSurveysAsync(int? employeeid, string language);
|
||||
Task<(bool IsSuccess, dynamic Surveys, string ErrorMessage)> GetHistoricSurveysAsync(int? employeeid, string language);
|
||||
Task<(bool IsSuccess, Models.SurveyResponse SurveyResponse, string ErrorMessage)> PutSurveyResponseAsync(int Id, Models.SurveyResponse surveyResponse);
|
||||
Task<(bool IsSuccess, Models.SurveyResponse SurveyResponse, string ErrorMessage)> DeleteSurveyResponseAsync(int Id);
|
||||
Task<(bool IsSuccess, dynamic SurveyResponse, string ErrorMessage)> GetSurveyResponseByIdAsync(int responseId);
|
||||
|
@ -11,6 +11,7 @@ namespace DamageAssesment.Api.Responses.Models
|
||||
|
||||
public int? AnswerId { get; set; }
|
||||
public bool IsDeleted { get; set; }
|
||||
public string FileName { get; set; }
|
||||
|
||||
public Attachment(int answerId, string uri)
|
||||
{
|
||||
|
@ -4,6 +4,7 @@
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public int RegionId { get; set; }
|
||||
public string LocationCode { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string MaintenanceCenter { get; set; }
|
||||
public string SchoolType { get; set; }
|
||||
|
@ -0,0 +1,10 @@
|
||||
namespace DamageAssesment.Api.Responses.Models
|
||||
{
|
||||
public class QuestionCategory
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string IconName { get; set; }
|
||||
public string IconLibrary { get; set; }
|
||||
public object Titles { get; set; }
|
||||
}
|
||||
}
|
@ -2,13 +2,20 @@
|
||||
|
||||
namespace DamageAssesment.Api.Responses.Models
|
||||
{
|
||||
public enum SurveyStatus
|
||||
{
|
||||
PENDING,
|
||||
ACTIVE,
|
||||
INACTIVE
|
||||
}
|
||||
public class Survey
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public bool IsEnabled { get; set; }
|
||||
public DateTime StartDate { get; set; }
|
||||
public DateTime EndDate { get; set; }
|
||||
public DateTime? StartDate { get; set; }
|
||||
public DateTime? EndDate { get; set; }
|
||||
public DateTime CreatedDate { get; set; }
|
||||
public string Status { get; set; }
|
||||
public Dictionary<string, string> Titles { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,24 @@
|
||||
namespace DamageAssesment.Api.Responses.Models
|
||||
{
|
||||
public class SurveyExport
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string SurveyQuestion { get; set; }
|
||||
public string Answer { get; set; }
|
||||
public string Category { get; set; }
|
||||
|
||||
public string School { get; set; }
|
||||
public string Location { get; set; }
|
||||
public string Region { get; set; }
|
||||
|
||||
public string MC { get; set; }
|
||||
public string ResponseDate { get; set; }
|
||||
public string Notes { get; set; }
|
||||
|
||||
public string Attachment1 { get; set; }
|
||||
public string Attachment2 { get; set; }
|
||||
public string Attachment3 { get; set; }
|
||||
public string Attachment4 { get; set; }
|
||||
public string Attachment5 { get; set; }
|
||||
}
|
||||
}
|
@ -26,6 +26,7 @@ builder.Services.AddScoped<IQuestionServiceProvider, QuestionServiceProvider>();
|
||||
builder.Services.AddScoped<IEmployeeServiceProvider, EmployeeServiceProvider>();
|
||||
builder.Services.AddScoped<IAttachmentServiceProvider, AttachmentServiceProvider>();
|
||||
builder.Services.AddScoped<ISurveyServiceProvider, SurveyServiceProvider>();
|
||||
builder.Services.AddScoped<IExcelExportService, ExcelExportService>();
|
||||
|
||||
builder.Services.AddHttpClient<IHttpUtil, HttpUtil>().
|
||||
AddTransientHttpErrorPolicy(policy => policy.WaitAndRetryAsync(maxApiCallRetries, _ => TimeSpan.FromSeconds(intervalToRetry))).
|
||||
|
@ -0,0 +1,62 @@
|
||||
using DamageAssesment.Api.Responses.Interfaces;
|
||||
using DamageAssesment.Api.Responses.Models;
|
||||
using OfficeOpenXml;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace DamageAssesment.Api.Responses.Providers
|
||||
{
|
||||
public class ExcelExportService : IExcelExportService
|
||||
{
|
||||
public byte[] ExportToExcel<T1>(List<object> responses)
|
||||
{
|
||||
ExcelPackage.LicenseContext = OfficeOpenXml.LicenseContext.NonCommercial;
|
||||
using (var package = new ExcelPackage())
|
||||
{
|
||||
// Create the first worksheet and populate it with responses
|
||||
var workSheet1 = package.Workbook.Worksheets.Add("responses");
|
||||
PopulateWorksheet(workSheet1, responses);
|
||||
return package.GetAsByteArray();
|
||||
}
|
||||
}
|
||||
private void PopulateWorksheet(ExcelWorksheet worksheet, List<object> data)
|
||||
{
|
||||
if (data.Count > 0)
|
||||
{
|
||||
var properties = data[0].GetType().GetProperties();
|
||||
List<int> IsAttchments = new List<int>();
|
||||
// Add column headers
|
||||
for (int col = 1; col <= properties.Length; col++)
|
||||
{
|
||||
worksheet.Cells[1, col].Value = properties[col - 1].Name;
|
||||
if (properties[col - 1].Name.ToLower().Contains("attachment"))
|
||||
IsAttchments.Add(col);
|
||||
}
|
||||
|
||||
// Add data
|
||||
for (int row = 2; row <= data.Count + 1; row++)
|
||||
{
|
||||
for (int col = 1; col <= properties.Length; col++)
|
||||
{
|
||||
|
||||
string value = Convert.ToString(properties[col - 1].GetValue(data[row - 2]));
|
||||
if (IsAttchments.Where(a => a == col).Count() > 0 && !string.IsNullOrEmpty(value))
|
||||
{
|
||||
List<string> attachments = value.Split("##").ToList();
|
||||
try
|
||||
{
|
||||
Uri linkUri = new Uri(attachments[1]);
|
||||
worksheet.Cells[row, col].Value = attachments[0];
|
||||
worksheet.Cells[row, col].Style.Font.UnderLine = true;
|
||||
}
|
||||
catch { worksheet.Cells[row, col].Value = attachments[1]; }
|
||||
}
|
||||
else
|
||||
worksheet.Cells[row, col].Value = value;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -3,6 +3,9 @@ using DamageAssesment.Api.Responses.Db;
|
||||
using DamageAssesment.Api.Responses.Interfaces;
|
||||
using DamageAssesment.Api.Responses.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Metadata.Internal;
|
||||
using System.Reflection;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace DamageAssesment.Api.Responses.Providers
|
||||
{
|
||||
@ -43,7 +46,6 @@ namespace DamageAssesment.Api.Responses.Providers
|
||||
// Create and save SurveyResponse records with references to existing Employee and Location records
|
||||
surveyResponseDbContext.SurveyResponses.Add(new Db.SurveyResponse { SurveyId = 1, EmployeeId = 1, LocationId = 1, ClientDevice = "Mobile", Latitude = 98.8767, Longitute = -129.9897, KeyAnswerResult = "true", CreatedDate = DateTime.Now });
|
||||
surveyResponseDbContext.SurveyResponses.Add(new Db.SurveyResponse { SurveyId = 1, EmployeeId = 2, LocationId = 2, ClientDevice = "Mobile", Latitude = 98.8767, Longitute = -129.9897, KeyAnswerResult = "true", CreatedDate = DateTime.Now });
|
||||
|
||||
surveyResponseDbContext.SaveChanges();
|
||||
}
|
||||
}
|
||||
@ -112,24 +114,18 @@ namespace DamageAssesment.Api.Responses.Providers
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<(bool IsSuccess, dynamic Surveys, string ErrorMessage)> GetActiveSurveysAsync(int employeeid, string language)
|
||||
public async Task<(bool IsSuccess, dynamic Surveys, string ErrorMessage)> GetActiveSurveysAsync(int? employeeid, string language)
|
||||
{
|
||||
try
|
||||
{
|
||||
logger?.LogInformation("Querying to get SurveyResponse object from DB");
|
||||
//get all the survey that already taken by the employee
|
||||
var listOfsurveysId = await surveyResponseDbContext.SurveyResponses.Where(x => x.EmployeeId == employeeid).Select(y => y.SurveyId).ToListAsync();
|
||||
var surveys = await surveyServiceProvider.getSurveysAsync(language);
|
||||
|
||||
if (surveys != null)
|
||||
{
|
||||
surveys = surveys.Where(s => s.IsEnabled == true && s.StartDate <= DateTime.Now && s.EndDate >= DateTime.Now).ToList();
|
||||
}
|
||||
|
||||
if (listOfsurveysId==null || listOfsurveysId.Count == 0)
|
||||
surveys = surveys.Where(s => s.IsEnabled == true && s.Status == SurveyStatus.ACTIVE.ToString()).ToList();
|
||||
if (employeeid == null || employeeid == 0)
|
||||
return (true, surveys, null);
|
||||
|
||||
var activeSurveys = surveys.Where(s => s.IsEnabled == true && s.StartDate <= DateTime.Now && s.EndDate >= DateTime.Now && !listOfsurveysId.Contains(s.Id));
|
||||
List<int> listOfsurveysId = await surveyResponseDbContext.SurveyResponses.Where(x => x.EmployeeId == employeeid.Value).Select(y => y.SurveyId).ToListAsync();
|
||||
var activeSurveys = surveys.Where(s => !listOfsurveysId.Contains(s.Id));
|
||||
return (true, activeSurveys, null);
|
||||
}
|
||||
catch (Exception ex)
|
||||
@ -139,21 +135,24 @@ namespace DamageAssesment.Api.Responses.Providers
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<(bool IsSuccess, dynamic Surveys, string ErrorMessage)> GetHistoricSurveysAsync(int employeeid, string language)
|
||||
public async Task<(bool IsSuccess, dynamic Surveys, string ErrorMessage)> GetHistoricSurveysAsync(int? employeeid, string language)
|
||||
{
|
||||
try
|
||||
{
|
||||
logger?.LogInformation("Querying to get SurveyResponse object from DB");
|
||||
//get all the survey that already taken by the employee
|
||||
var surveyResponses = await surveyResponseDbContext.SurveyResponses.Where(x => x.EmployeeId == employeeid).ToListAsync();
|
||||
var surveys = await surveyServiceProvider.getSurveysAsync(language);
|
||||
|
||||
var surveys = await surveyServiceProvider.getSurveysAsync(language);
|
||||
// returning only historic data: end date is less than current date.
|
||||
surveys = surveys.Where(s => s.Status == SurveyStatus.INACTIVE.ToString()).ToList();
|
||||
if (employeeid == null || employeeid == 0)
|
||||
return (true, surveys, null);
|
||||
var surveyResponses = await surveyResponseDbContext.SurveyResponses.Where(x => x.EmployeeId == employeeid).ToListAsync();
|
||||
var historicSurveys = from s in surveys
|
||||
from r in surveyResponses
|
||||
where s.Id == r.SurveyId
|
||||
select s;
|
||||
|
||||
return (true, historicSurveys, null);
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@ -310,6 +309,26 @@ namespace DamageAssesment.Api.Responses.Providers
|
||||
return (false, null, ex.Message);
|
||||
}
|
||||
}
|
||||
public async Task<(bool IsSuccess, List<object> surveyResponses, string ErrorMessage)> ExportSurveyResponsesAsync(int surveyId, string language, bool isadmin)
|
||||
{
|
||||
try
|
||||
{
|
||||
var responses = await getAllSurveyResponsesExcelAsync(surveyId, language, isadmin);
|
||||
|
||||
if (responses != null)
|
||||
return (true, responses, "Request Successful.");
|
||||
else
|
||||
{
|
||||
responses = null;
|
||||
return (true, responses, "Empty object returned");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger?.LogError(ex.ToString());
|
||||
return (false, null, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<(bool IsSuccess, Models.SurveyResponse SurveyResponse, string ErrorMessage)> PostSurveyResponseAsync(Models.SurveyResponse surveyResponse)
|
||||
{
|
||||
@ -490,7 +509,7 @@ namespace DamageAssesment.Api.Responses.Providers
|
||||
{
|
||||
var employee = await employeeServiceProvider.getEmployeeAsync(surveyResponse.EmployeeId);
|
||||
var answers = await answerServiceProvider.GetAnswersByResponseIdAsync(surveyResponse.Id);
|
||||
var allQuestions = await questionServiceProvider.getQuestionsAsync();
|
||||
var allQuestions = await questionServiceProvider.getQuestionsAsync(null);
|
||||
var questions = allQuestions.Where(s => s.SurveyId == surveyResponse.SurveyId);
|
||||
var attachments = await attachmentServiceProvider.getAttachmentsAsync();
|
||||
|
||||
@ -546,7 +565,7 @@ namespace DamageAssesment.Api.Responses.Providers
|
||||
}
|
||||
|
||||
var answers = await answerServiceProvider.getAnswersAsync();
|
||||
var questions = await questionServiceProvider.getQuestionsAsync();
|
||||
var questions = await questionServiceProvider.getQuestionsAsync(null);
|
||||
var surveyQuestions = from q in questions where q.SurveyId == surveyId select q;
|
||||
|
||||
//var surveyQuestions = await questionServiceProvider.getSurveyQuestionsAsync(surveyId);
|
||||
@ -652,7 +671,7 @@ namespace DamageAssesment.Api.Responses.Providers
|
||||
|
||||
|
||||
var answers = await answerServiceProvider.getAnswersAsync();
|
||||
var questions = await questionServiceProvider.getQuestionsAsync();
|
||||
var questions = await questionServiceProvider.getQuestionsAsync(null);
|
||||
var attachments = await attachmentServiceProvider.getAttachmentsAsync();
|
||||
|
||||
var result = from r in surveyResonses
|
||||
@ -689,7 +708,136 @@ namespace DamageAssesment.Api.Responses.Providers
|
||||
return null;
|
||||
}
|
||||
}
|
||||
//Method to get All Survey Responses for excel export
|
||||
private async Task<List<object>> getAllSurveyResponsesExcelAsync(int surveyId, string language, bool isadmin)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (string.IsNullOrEmpty(language)) language = "en";
|
||||
List<Db.SurveyResponse> surveyResonses;
|
||||
surveyResonses = await surveyResponseDbContext.SurveyResponses.Where(a => a.SurveyId == surveyId).ToListAsync();
|
||||
var answers = await answerServiceProvider.getAnswersAsync();
|
||||
var Locations = await locationServiceProvider.getLocationsAsync();
|
||||
var regions = await regionServiceProvider.getRegionsAsync();
|
||||
var questions = await questionServiceProvider.getQuestionsAsync(language);
|
||||
var categories = await questionServiceProvider.GetQuestionCategoriesAsync(language);
|
||||
var attachments = await attachmentServiceProvider.getAttachmentsAsync();
|
||||
List<object> questionLists = new List<object>();
|
||||
var allques = from res in surveyResonses
|
||||
join loc in Locations on res.LocationId equals loc.Id
|
||||
join reg in regions on loc.RegionId equals reg.Id
|
||||
join ans in answers on res.Id equals ans.SurveyResponseId
|
||||
join q in questions on ans.QuestionId equals q.Id
|
||||
join qc in categories on q.CategoryId equals qc.Id
|
||||
select new
|
||||
{
|
||||
responseId = res.Id,
|
||||
questionId = q.Id,
|
||||
QuestionNumber = q.QuestionNumber,
|
||||
Category = JsonSerializer.Deserialize<Dictionary<string, string>>(qc.Titles.ToString())[language],
|
||||
question = q.Text[language],
|
||||
answerId = ans.Id,
|
||||
AnswerText = ans.AnswerText,
|
||||
Comment = ans.Comment,
|
||||
Location = loc.LocationCode,
|
||||
school = loc.Name,
|
||||
Region = reg.Name,
|
||||
MC = loc.MaintenanceCenter,
|
||||
ResponseDate = res.CreatedDate,
|
||||
EmployeeId = res.EmployeeId,
|
||||
ClientDevice = res.ClientDevice,
|
||||
Attachments = attachments.Where(a => a.AnswerId == ans.Id).Select(a => a.FileName + "##" + a.URI).ToList()
|
||||
};
|
||||
List<object> allresoponses = new List<object>();
|
||||
foreach (var item in allques)
|
||||
{
|
||||
|
||||
List<string> ansattachments = item.Attachments.ToList();
|
||||
|
||||
//// Initialize the attachment dictionary
|
||||
//var attachmentsobject = new Dictionary<string, string>();
|
||||
//for (int i = 0; i < ansattachments.Count; i++)
|
||||
//{
|
||||
// attachmentsobject["Attachment"+(i+1).ToString()] = ansattachments[i];
|
||||
//}
|
||||
|
||||
|
||||
string[] variables = new string[5];
|
||||
for (int i = 0; i < 5; i++) // Assuming you want to assign 5 values
|
||||
{
|
||||
if (i < ansattachments.Count())
|
||||
{
|
||||
variables[i] = ansattachments[i];
|
||||
}
|
||||
else
|
||||
{
|
||||
variables[i] = string.Empty; // or null, or any other default value
|
||||
}
|
||||
}
|
||||
|
||||
// Now, you can access the values using the variables
|
||||
string att1 = variables[0], att2 = variables[1], att3 = variables[2], att4 = variables[3], att5 = variables[4];
|
||||
object response;
|
||||
if (isadmin)
|
||||
{
|
||||
response = new
|
||||
{
|
||||
SurveyQuestion = item.question,
|
||||
Answer = item.AnswerText,
|
||||
Category = item.Category,
|
||||
School = item.school,
|
||||
Location = item.Location,
|
||||
Region = item.Region,
|
||||
MC = item.MC,
|
||||
ResponseDate = item.ResponseDate.ToString(),
|
||||
Notes = item.Comment,
|
||||
Attachment1 = att1,
|
||||
Attachment2 = att2,
|
||||
Attachment3 = att3,
|
||||
Attachment4 = att4,
|
||||
Attachment5 = att5,
|
||||
User = item.EmployeeId,
|
||||
DeviceType = item.ClientDevice,
|
||||
Reference = item.responseId
|
||||
};
|
||||
// Add the attachment dictionary to the response object
|
||||
// response = new { response, Attachments = attachments };
|
||||
}
|
||||
else
|
||||
{
|
||||
response = new
|
||||
{
|
||||
SurveyQuestion = item.question,
|
||||
Answer = item.AnswerText,
|
||||
Category = item.Category,
|
||||
School = item.school,
|
||||
Location = item.Location,
|
||||
Region = item.Region,
|
||||
MC = item.MC,
|
||||
ResponseDate = item.ResponseDate.ToString(),
|
||||
Notes = item.Comment,
|
||||
Attachment1 = att1,
|
||||
Attachment2 = att2,
|
||||
Attachment3 = att3,
|
||||
Attachment4 = att4,
|
||||
Attachment5 = att5
|
||||
};
|
||||
|
||||
// Add the attachment dictionary to the response object
|
||||
// response = new { response, Attachments = attachments };
|
||||
}
|
||||
allresoponses.Add(response);
|
||||
}
|
||||
return allresoponses;
|
||||
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger?.LogError($"Exception Found : {ex.Message} - Ref: SurveyResponsesProvider.getSurveyResponseBySurveyIdAsync()");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
//Method to get Answers By Maintenance Center by surveyId
|
||||
private async Task<dynamic> getResultsByMaintenanceCenterAsync(int surveyId, int employeeid)
|
||||
@ -786,7 +934,7 @@ namespace DamageAssesment.Api.Responses.Providers
|
||||
}
|
||||
|
||||
var answers = await answerServiceProvider.getAnswersAsync();
|
||||
var questions = await questionServiceProvider.getQuestionsAsync();
|
||||
var questions = await questionServiceProvider.getQuestionsAsync(null);
|
||||
var surveyQuestions = from q in questions where q.SurveyId == surveyId select q;
|
||||
var attachments = await attachmentServiceProvider.getAttachmentsAsync();
|
||||
|
||||
|
@ -10,10 +10,12 @@ namespace DamageAssesment.Api.Responses.Services
|
||||
{
|
||||
}
|
||||
|
||||
public async Task<List<Question>> getQuestionsAsync()
|
||||
public async Task<List<Question>> getQuestionsAsync(string language)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!string.IsNullOrEmpty(language))
|
||||
url = url + "/" + language;
|
||||
var responseJsonString = await httpUtil.SendAsync(HttpMethod.Get, url, null);
|
||||
var questions = JsonConvert.DeserializeObject<List<Question>>(responseJsonString);
|
||||
|
||||
@ -27,6 +29,27 @@ namespace DamageAssesment.Api.Responses.Services
|
||||
return new List<Question>();
|
||||
}
|
||||
}
|
||||
public async Task<List<QuestionCategory>> GetQuestionCategoriesAsync(string? language)
|
||||
{
|
||||
try
|
||||
{
|
||||
url = urlBase + configuration.GetValue<string>("RessourceSettings:QuestionCategory");
|
||||
|
||||
if (!string.IsNullOrEmpty(language))
|
||||
url = url + "/" + language;
|
||||
var responseJsonString = await httpUtil.SendAsync(HttpMethod.Get, url, null);
|
||||
var questions = JsonConvert.DeserializeObject<List<QuestionCategory>>(responseJsonString);
|
||||
|
||||
if (questions == null || !questions.Any())
|
||||
return new List<QuestionCategory>();
|
||||
else return questions;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger?.LogError($"Exception Found : {ex.Message} - Ref: QuestionServiceProvider.GetQuestionCategoriesAsync()");
|
||||
return new List<QuestionCategory>();
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<List<SurveyQuestions>> getSurveyQuestionsAsync(int surveyId)
|
||||
{
|
||||
@ -37,7 +60,7 @@ namespace DamageAssesment.Api.Responses.Services
|
||||
var questions = JsonConvert.DeserializeObject<List<SurveyQuestions>>(responseJsonString);
|
||||
|
||||
if (questions == null || !questions.Any())
|
||||
return new List<SurveyQuestions>() ;
|
||||
return new List<SurveyQuestions>();
|
||||
else return questions;
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
@ -15,12 +15,12 @@
|
||||
"AttachmentUrlBase": "http://localhost:5243",
|
||||
"SurveyUrlBase": "http://localhost:5009"
|
||||
},
|
||||
|
||||
"RessourceSettings": {
|
||||
"Employee": "/employees",
|
||||
"EmployeeById": "/employees/{0}",
|
||||
"Question": "/questions",
|
||||
"QuestionById": "/questions/{0}",
|
||||
"QuestionCategory": "/questions/categories",
|
||||
"SurveyQuestion": "/questions/bysurvey/{0}",
|
||||
"Survey": "/surveys",
|
||||
"SurveyById": "/surveys/{0}",
|
||||
|
@ -13,9 +13,9 @@ namespace DamageAssesment.Api.Surveys.Db
|
||||
|
||||
public bool IsEnabled { get; set; }
|
||||
|
||||
public DateTime StartDate { get; set; }
|
||||
public DateTime? StartDate { get; set; }
|
||||
|
||||
public DateTime EndDate { get; set; }
|
||||
public DateTime? EndDate { get; set; }
|
||||
|
||||
public DateTime CreatedDate { get; set; } = DateTime.Now;
|
||||
/*
|
||||
|
@ -21,8 +21,8 @@ namespace DamageAssesment.Api.Surveys.Models
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public bool IsEnabled { get; set; }
|
||||
public DateTime StartDate { get; set; }
|
||||
public DateTime EndDate { get; set; }
|
||||
public DateTime CreatedDate { get; set; }
|
||||
public DateTime? StartDate { get; set; }
|
||||
public DateTime? EndDate { get; set; }
|
||||
public DateTime? CreatedDate { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -85,14 +85,21 @@ namespace DamageAssesment.Api.Surveys.Providers
|
||||
MultiLanguage = dict;
|
||||
return MultiLanguage;
|
||||
}
|
||||
public string GetStatus(DateTime StartDate,DateTime EndDate)
|
||||
public string GetStatus(DateTime? StartDate, DateTime? EndDate)
|
||||
{
|
||||
if (StartDate > DateTime.Now)
|
||||
return SurveyStatus.PENDING.ToString();
|
||||
else if (StartDate <= DateTime.Now && EndDate > DateTime.Now)
|
||||
return SurveyStatus.ACTIVE.ToString();
|
||||
else
|
||||
try
|
||||
{
|
||||
if (StartDate > DateTime.Now)
|
||||
return SurveyStatus.PENDING.ToString();
|
||||
else if (StartDate <= DateTime.Now && EndDate > DateTime.Now)
|
||||
return SurveyStatus.ACTIVE.ToString();
|
||||
else
|
||||
return SurveyStatus.INACTIVE.ToString();
|
||||
}
|
||||
catch
|
||||
{
|
||||
return SurveyStatus.INACTIVE.ToString();
|
||||
}
|
||||
}
|
||||
// Method to get surveys asynchronously with multi-language support
|
||||
public async Task<(bool IsSuccess, IEnumerable<Models.MultiLanSurvey> Surveys, string ErrorMessage)> GetSurveysAsync(string language)
|
||||
@ -101,7 +108,8 @@ namespace DamageAssesment.Api.Surveys.Providers
|
||||
try
|
||||
{
|
||||
logger?.LogInformation("Get all Surveys from DB");
|
||||
var surveys = await surveyDbContext.Surveys.Where(s => s.IsEnabled == true).ToListAsync();
|
||||
//checking is enabled in survey response
|
||||
var surveys = await surveyDbContext.Surveys.ToListAsync();//Where(s => s.IsEnabled == true)
|
||||
|
||||
if (surveys != null)
|
||||
{
|
||||
@ -113,7 +121,7 @@ namespace DamageAssesment.Api.Surveys.Providers
|
||||
EndDate = s.EndDate,
|
||||
IsEnabled = s.IsEnabled,
|
||||
CreatedDate = s.CreatedDate,
|
||||
Status= GetStatus(s.StartDate,s.EndDate),
|
||||
Status = GetStatus(s.StartDate, s.EndDate),
|
||||
Titles = CreateMultiLanguageObject(GetSurveyTranslations(s.Id, null, language))
|
||||
};
|
||||
|
||||
@ -135,7 +143,8 @@ namespace DamageAssesment.Api.Surveys.Providers
|
||||
try
|
||||
{
|
||||
logger?.LogInformation("Query Survey");
|
||||
var survey = await surveyDbContext.Surveys.SingleOrDefaultAsync(s => s.Id == id && s.IsEnabled == true);
|
||||
// removed is enabled becuase we are using it in responses to get response
|
||||
var survey = await surveyDbContext.Surveys.SingleOrDefaultAsync(s => s.Id == id);
|
||||
|
||||
if (survey != null)
|
||||
{
|
||||
@ -216,12 +225,10 @@ namespace DamageAssesment.Api.Surveys.Providers
|
||||
_survey = mapper.Map<Models.Survey, Db.Survey>(survey);
|
||||
surveyDbContext.Surveys.Update(_survey);
|
||||
await surveyDbContext.SaveChangesAsync();
|
||||
|
||||
List<Db.SurveyTranslation> listSurveyTranslation = new List<Db.SurveyTranslation>();
|
||||
Random random = new Random();
|
||||
foreach (var title in survey.Titles)
|
||||
{
|
||||
listSurveyTranslation.Add(new Db.SurveyTranslation { Id = random.Next(), SurveyId = _survey.Id, Language = title.Language, Title = title.Title });
|
||||
listSurveyTranslation.Add(new Db.SurveyTranslation { SurveyId = _survey.Id, Language = title.Language, Title = title.Title });
|
||||
}
|
||||
surveyDbContext.SurveysTranslation.AddRange(listSurveyTranslation);
|
||||
await surveyDbContext.SaveChangesAsync();
|
||||
|
18
DamageAssesmentApi/azure-pipelines.yml
Normal file
18
DamageAssesmentApi/azure-pipelines.yml
Normal file
@ -0,0 +1,18 @@
|
||||
trigger:
|
||||
- '*'
|
||||
|
||||
pr:
|
||||
- '*'
|
||||
|
||||
pool:
|
||||
vmImage: 'ubuntu-latest'
|
||||
|
||||
steps:
|
||||
- checkout: self
|
||||
|
||||
- script: |
|
||||
#!/bin/bash
|
||||
|
||||
chmod +x ./Scripts/build_and_push_services2acr.sh
|
||||
./Scripts/build_and_push_services2acr.sh
|
||||
displayName: 'Run build_and_push_services2acr.sh'
|
30
Scripts/build_and_push_services2acr.ps1
Normal file
30
Scripts/build_and_push_services2acr.ps1
Normal file
@ -0,0 +1,30 @@
|
||||
# powershell -ExecutionPolicy Bypass -File .\build_and_push_services2acr.ps1
|
||||
# Specify the path to your docker-compose.yml
|
||||
$composeFile = "C:\Users\santh\OneDrive\Desktop\DOCKERS\ubuntu\Sprint6\C1011\Backend-API-Services\DamageAssesmentApi\docker-compose.yml"
|
||||
|
||||
# List of services to build, tag, and push
|
||||
$services = @(
|
||||
"damageassesmentapianswers",
|
||||
"damageassesmentapiattachments",
|
||||
"damageassesmentapiemployees",
|
||||
"damageassesmentapilocations",
|
||||
"damageassesmentapiquestions",
|
||||
"damageassesmentapisurveys",
|
||||
"damageassesmentapidoculinks",
|
||||
"damageassesmentapiresponses"
|
||||
)
|
||||
|
||||
# Log in to ACR (replace ACR_USERNAME and ACR_PASSWORD)
|
||||
docker login dadeschoolscontainerregistry.azurecr.io -u dadeSchoolsContainerRegistry -p k1f8hE0O5hj3tYCCR/5stNrkw5BZoTmAqid/hvaVo8+ACRDc2Arn
|
||||
|
||||
# Loop through the services and build, tag, and push
|
||||
foreach ($service in $services) {
|
||||
# Build the service
|
||||
docker-compose -f $composeFile build $service
|
||||
|
||||
# Tag the image for ACR
|
||||
docker tag "$service" "dadeschoolscontainerregistry.azurecr.io/$service"
|
||||
|
||||
# Push the image to ACR
|
||||
docker push "dadeschoolscontainerregistry.azurecr.io/$service"
|
||||
}
|
39
Scripts/build_and_push_services2acr.sh
Normal file
39
Scripts/build_and_push_services2acr.sh
Normal file
@ -0,0 +1,39 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Determine the current directory (where the script is located)
|
||||
script_directory="$( cd "$(dirname "$0")" ; pwd -P )"
|
||||
|
||||
# Use the 'find' command to locate the 'docker-compose.yml' file within the repository directory
|
||||
composeFile=$(find "$script_directory/.." -name "docker-compose.yml" -type f | head -n 1)
|
||||
|
||||
if [ -z "$composeFile" ]; then
|
||||
echo "docker-compose.yml not found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# List of services to build, tag, and push
|
||||
services=(
|
||||
"damageassesmentapianswers"
|
||||
"damageassesmentapiattachments"
|
||||
"damageassesmentapiemployees"
|
||||
"damageassesmentapilocations"
|
||||
"damageassesmentapiquestions"
|
||||
"damageassesmentapisurveys"
|
||||
"damageassesmentapidoculinks"
|
||||
"damageassesmentapiresponses"
|
||||
)
|
||||
|
||||
# Log in to ACR (replace ACR_USERNAME and ACR_PASSWORD)
|
||||
docker login dadeschoolscontainerregistry.azurecr.io -u dadeSchoolsContainerRegistry -p k1f8hE0O5hj3tYCCR/5stNrkw5BZoTmAqid/hvaVo8+ACRDc2Arn
|
||||
|
||||
# Loop through the services and build, tag, and push
|
||||
for service in "${services[@]}"; do
|
||||
# Build the service
|
||||
docker-compose -f "$composeFile" build "$service"
|
||||
|
||||
# Tag the image for ACR
|
||||
docker tag "$service" "dadeschoolscontainerregistry.azurecr.io/$service"
|
||||
|
||||
# Push the image to ACR
|
||||
docker push "dadeschoolscontainerregistry.azurecr.io/$service"
|
||||
done
|
Loading…
Reference in New Issue
Block a user