From 78ed96237d788bbe27336cbdd07d49ce95d8f579 Mon Sep 17 00:00:00 2001
From: Qais Yousuf
Date: Fri, 8 Mar 2024 11:20:36 +0100
Subject: [PATCH] Survey Models Created
---
Data/SurveyContext.cs | 26 ++
Model/Answer.cs | 18 +
Model/Question.cs | 24 ++
Model/QuestionType.cs | 25 ++
Model/QuestionTypeEntities.cs | 17 +
Model/Questionnaire.cs | 16 +
Services/Implemnetation/AddressRepository.cs | 4 +-
Services/Implemnetation/FooterRepository.cs | 23 ++
.../Implemnetation/QuestionnaireRepository.cs | 58 +++
.../Implemnetation/SocialMediaRepository.cs | 2 +-
Services/Interaces/IAddressRepository.cs | 4 +-
Services/Interaces/IFooterRepository.cs | 2 +
.../Interaces/IQuestionnaireRepository.cs | 22 ++
.../Admin/Controllers/FooterController.cs | 165 +++++++-
.../Controllers/QuestionnaireController.cs | 81 ++++
Web/Areas/Admin/Views/Address/Index.cshtml | 2 +-
Web/Areas/Admin/Views/Banner/Index.cshtml | 6 +-
Web/Areas/Admin/Views/Footer/Create.cshtml | 2 +-
Web/Areas/Admin/Views/Footer/Delete.cshtml | 175 +++++++++
Web/Areas/Admin/Views/Footer/Edit.cshtml | 106 +++++
Web/Areas/Admin/Views/Footer/Index.cshtml | 12 +-
.../Admin/Views/Questionnaire/Create.cshtml | 108 +++++
.../Admin/Views/Questionnaire/Index.cshtml | 47 +++
.../Admin/Views/Shared/_AdminLayout.cshtml | 4 +
.../Admin/Views/SocialMedia/Index.cshtml | 6 +-
Web/Areas/Admin/Views/_ViewImports.cshtml | 1 +
Web/Extesions/ServicesExtesions.cs | 4 +
...240307153635_SurveyModelsAdded.Designer.cs | 371 ++++++++++++++++++
.../20240307153635_SurveyModelsAdded.cs | 108 +++++
Web/Migrations/SurveyContextModelSnapshot.cs | 112 ++++++
Web/Program.cs | 4 +-
.../FooterVm/FooterDeleteViewModel.cs | 43 ++
Web/ViewModel/FooterVm/FooterEditViewModel.cs | 43 ++
.../FooterVm/InserFooterViewModel.cs | 8 +-
.../QuestionnaireVM/QuestionnaireViewModel.cs | 19 +
Web/wwwroot/css/site.css | 5 +
36 files changed, 1638 insertions(+), 35 deletions(-)
create mode 100644 Model/Answer.cs
create mode 100644 Model/Question.cs
create mode 100644 Model/QuestionType.cs
create mode 100644 Model/QuestionTypeEntities.cs
create mode 100644 Model/Questionnaire.cs
create mode 100644 Services/Implemnetation/QuestionnaireRepository.cs
create mode 100644 Services/Interaces/IQuestionnaireRepository.cs
create mode 100644 Web/Areas/Admin/Controllers/QuestionnaireController.cs
create mode 100644 Web/Areas/Admin/Views/Footer/Delete.cshtml
create mode 100644 Web/Areas/Admin/Views/Footer/Edit.cshtml
create mode 100644 Web/Areas/Admin/Views/Questionnaire/Create.cshtml
create mode 100644 Web/Areas/Admin/Views/Questionnaire/Index.cshtml
create mode 100644 Web/Migrations/20240307153635_SurveyModelsAdded.Designer.cs
create mode 100644 Web/Migrations/20240307153635_SurveyModelsAdded.cs
create mode 100644 Web/ViewModel/FooterVm/FooterDeleteViewModel.cs
create mode 100644 Web/ViewModel/FooterVm/FooterEditViewModel.cs
create mode 100644 Web/ViewModel/QuestionnaireVM/QuestionnaireViewModel.cs
diff --git a/Data/SurveyContext.cs b/Data/SurveyContext.cs
index e102c04..e4933bb 100644
--- a/Data/SurveyContext.cs
+++ b/Data/SurveyContext.cs
@@ -26,6 +26,13 @@ namespace Data
public DbSet FooterSocialMedias { get; set; }
+ public DbSet Questionnaires { get; set; }
+
+ public DbSet Questions { get; set; }
+ public DbSet Answers { get; set; }
+
+ public DbSet QuestionTypeEntities { get; set; }
+
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
@@ -43,7 +50,26 @@ namespace Data
.HasForeignKey(fsm => fsm.SocialId);
+ modelBuilder.Entity()
+ .HasKey(q => q.Id);
+ modelBuilder.Entity()
+ .HasMany(q => q.Questions)
+ .WithOne(qn => qn.Questionnaire)
+ .HasForeignKey(qn => qn.QuestionnaireId)
+ .OnDelete(DeleteBehavior.Cascade);
+
+ modelBuilder.Entity()
+ .HasOne(q => q.Questionnaire)
+ .WithMany(qn => qn.Questions)
+ .HasForeignKey(q => q.QuestionnaireId)
+ .OnDelete(DeleteBehavior.Cascade);
+
+ modelBuilder.Entity()
+ .HasKey(a => a.Id);
+
+ modelBuilder.Entity()
+ .HasKey(t => t.Id);
base.OnModelCreating(modelBuilder);
}
diff --git a/Model/Answer.cs b/Model/Answer.cs
new file mode 100644
index 0000000..8e6783b
--- /dev/null
+++ b/Model/Answer.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Model
+{
+ public class Answer
+ {
+ public int Id { get; set; }
+ public string? Text { get; set; }
+ public int QuestionId { get; set; } // Foreign key for Question
+ [ForeignKey("QuestionId")]
+ public Question? Question { get; set; }
+ }
+}
diff --git a/Model/Question.cs b/Model/Question.cs
new file mode 100644
index 0000000..9aa9724
--- /dev/null
+++ b/Model/Question.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Model
+{
+ public class Question
+ {
+ public int Id { get; set; }
+ public string? Text { get; set; }
+ public QuestionType Type { get; set; }
+
+ // Foreign key for Questionnaire
+
+ public int QuestionnaireId { get; set; } // Foreign key for Questionnaire
+ [ForeignKey("QuestionnaireId")]
+ public Questionnaire? Questionnaire { get; set; }
+
+ public List? Answers { get; set; }
+ }
+}
diff --git a/Model/QuestionType.cs b/Model/QuestionType.cs
new file mode 100644
index 0000000..dcb5b75
--- /dev/null
+++ b/Model/QuestionType.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Model
+{
+ public enum QuestionType
+ {
+ Text,
+ CheckBox,
+ TrueFalse,
+ Multiple_choice,
+ Rating,
+ Likert,
+ Matrix,
+ Open_ended,
+ Demographic,
+ Ranking,
+ Image,
+ Slider
+
+ }
+}
diff --git a/Model/QuestionTypeEntities.cs b/Model/QuestionTypeEntities.cs
new file mode 100644
index 0000000..e6ff547
--- /dev/null
+++ b/Model/QuestionTypeEntities.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Model
+{
+ public class QuestionTypeEntities
+ {
+
+
+ public int Id { get; set; }
+ public QuestionType Type { get; set; }
+
+ }
+}
diff --git a/Model/Questionnaire.cs b/Model/Questionnaire.cs
new file mode 100644
index 0000000..7ea572d
--- /dev/null
+++ b/Model/Questionnaire.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Model
+{
+ public class Questionnaire
+ {
+ public int Id { get; set; }
+ public string? Title { get; set; }
+ public string? Description { get; set; }
+ public List? Questions { get; set; }
+ }
+}
diff --git a/Services/Implemnetation/AddressRepository.cs b/Services/Implemnetation/AddressRepository.cs
index b43dcba..ecef870 100644
--- a/Services/Implemnetation/AddressRepository.cs
+++ b/Services/Implemnetation/AddressRepository.cs
@@ -31,14 +31,14 @@ namespace Services.Implemnetation
await _context.SaveChangesAsync();
}
- public void Delete(int id)
+ public void Delete(int? id)
{
var addresId = GetAddressById(id);
_context.Addresss.Remove(addresId);
}
- public Address GetAddressById(int id)
+ public Address GetAddressById(int? id)
{
return _context.Addresss.AsNoTracking().Where(x => x.Id == id).FirstOrDefault();
}
diff --git a/Services/Implemnetation/FooterRepository.cs b/Services/Implemnetation/FooterRepository.cs
index 3b14201..74ee943 100644
--- a/Services/Implemnetation/FooterRepository.cs
+++ b/Services/Implemnetation/FooterRepository.cs
@@ -49,12 +49,35 @@ namespace Services.Implemnetation
public void Update(Footer footer)
{
+
_context.Footers.Update(footer);
+ //_context.Entry(footer).State = EntityState.Modified;
+
+
+ //foreach (var fsm in footer.FooterSocialMedias)
+ //{
+ // var existingEntity = _context.ChangeTracker.Entries()
+ // .FirstOrDefault(e => e.Entity.FooterId == fsm.FooterId && e.Entity.SocialId == fsm.SocialId);
+
+ // if (existingEntity != null)
+ // {
+ // _context.Entry(existingEntity.Entity).State = EntityState.Detached;
+ // }
+
+ // _context.Entry(fsm).State = EntityState.Modified;
+ //}
}
public List
-
+
diff --git a/Web/Areas/Admin/Views/Banner/Index.cshtml b/Web/Areas/Admin/Views/Banner/Index.cshtml
index c9957a1..50223d1 100644
--- a/Web/Areas/Admin/Views/Banner/Index.cshtml
+++ b/Web/Areas/Admin/Views/Banner/Index.cshtml
@@ -17,8 +17,8 @@
Create New
-
-
+
+
| Id |
@@ -28,7 +28,7 @@
Action |
-
+
@foreach (var item in Model)
{
diff --git a/Web/Areas/Admin/Views/Footer/Create.cshtml b/Web/Areas/Admin/Views/Footer/Create.cshtml
index a3301df..12630ec 100644
--- a/Web/Areas/Admin/Views/Footer/Create.cshtml
+++ b/Web/Areas/Admin/Views/Footer/Create.cshtml
@@ -82,7 +82,7 @@
-
+
@*