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