From 2ebe7ad5b332f209ca6ea0ca19a0ff46b13c216f Mon Sep 17 00:00:00 2001 From: Qais Yousuf Date: Sat, 30 Mar 2024 16:10:19 +0100 Subject: [PATCH] Frontend design completed --- Data/SurveyContext.cs | 12 + Model/Page.cs | 5 + Services/Implemnetation/AddressRepository.cs | 5 + Services/Implemnetation/BannerRepository.cs | 5 + Services/Implemnetation/PageRepository.cs | 12 + Services/Interaces/IAddressRepository.cs | 2 + Services/Interaces/IBannerRepository.cs | 1 + Services/Interaces/IPageRepository.cs | 4 + Web/Areas/Admin/Controllers/PageController.cs | 39 +- Web/Areas/Admin/Views/Page/Create.cshtml | 7 +- Web/Areas/Admin/Views/Page/Delete.cshtml | 6 + Web/Areas/Admin/Views/Page/Edit.cshtml | 5 + Web/Areas/Admin/Views/Page/Index.cshtml | 2 + .../Admin/Views/Questionnaire/Delete.cshtml | 29 +- Web/Controllers/HomeController.cs | 30 +- Web/Extesions/ServicesExtesions.cs | 2 + .../20240228172237_Initial.Designer.cs | 259 - ...240307153635_SurveyModelsAdded.Designer.cs | 371 - .../20240307153635_SurveyModelsAdded.cs | 108 - ...08_DifferntTypeofQuestionAdded.Designer.cs | 371 - ...40308144608_DifferntTypeofQuestionAdded.cs | 22 - ...1512_QuestionTypeEntityRemoved.Designer.cs | 355 - ...0240323171512_QuestionTypeEntityRemoved.cs | 34 - ...240326164015_QeustionAndAnswerNameAdded.cs | 54 - ...edRevmoedFromQuestionAndAnswer.Designer.cs | 355 - ...56_requiredRevmoedFromQuestionAndAnswer.cs | 54 - ...0240327153248_DataBaseCreated.Designer.cs} | 19 +- ...l.cs => 20240327153248_DataBaseCreated.cs} | 90 +- Web/Migrations/SurveyContextModelSnapshot.cs | 13 + Web/Program.cs | 9 +- Web/ViewComponents/AddressViewComponent.cs | 24 + Web/ViewComponents/BannerViewComponent.cs | 25 + Web/ViewComponents/FooterViewComponent.cs | 52 + .../NavigationFooterViewComponent.cs | 20 + Web/ViewComponents/NavigationViewComponent.cs | 21 + Web/ViewModel/PageVM/PageViewModel.cs | 7 + .../EditQuestionnaireViewModel.cs | 2 +- .../QuestionnaireVM/QuestionnaireViewModel.cs | 2 +- Web/Views/Home/Error.cshtml | 6 + Web/Views/Home/Index.cshtml | 69 +- .../Shared/Components/Address/Default.cshtml | 40 + .../Shared/Components/Banner/Default.cshtml | 31 + .../Shared/Components/Footer/Default.cshtml | 94 + .../Components/Navigation/Default.cshtml | 10 + .../NavigationFooter/Default.cshtml | 17 + Web/Views/Shared/_Layout.cshtml | 43 +- Web/Views/_ViewImports.cshtml | 2 + Web/Web.csproj | 7 +- Web/wwwroot/css/site.css | 21952 ++++++++-------- 49 files changed, 11750 insertions(+), 12954 deletions(-) delete mode 100644 Web/Migrations/20240228172237_Initial.Designer.cs delete mode 100644 Web/Migrations/20240307153635_SurveyModelsAdded.Designer.cs delete mode 100644 Web/Migrations/20240307153635_SurveyModelsAdded.cs delete mode 100644 Web/Migrations/20240308144608_DifferntTypeofQuestionAdded.Designer.cs delete mode 100644 Web/Migrations/20240308144608_DifferntTypeofQuestionAdded.cs delete mode 100644 Web/Migrations/20240323171512_QuestionTypeEntityRemoved.Designer.cs delete mode 100644 Web/Migrations/20240323171512_QuestionTypeEntityRemoved.cs delete mode 100644 Web/Migrations/20240326164015_QeustionAndAnswerNameAdded.cs delete mode 100644 Web/Migrations/20240326164756_requiredRevmoedFromQuestionAndAnswer.Designer.cs delete mode 100644 Web/Migrations/20240326164756_requiredRevmoedFromQuestionAndAnswer.cs rename Web/Migrations/{20240326164015_QeustionAndAnswerNameAdded.Designer.cs => 20240327153248_DataBaseCreated.Designer.cs} (95%) rename Web/Migrations/{20240228172237_Initial.cs => 20240327153248_DataBaseCreated.cs} (66%) create mode 100644 Web/ViewComponents/AddressViewComponent.cs create mode 100644 Web/ViewComponents/BannerViewComponent.cs create mode 100644 Web/ViewComponents/FooterViewComponent.cs create mode 100644 Web/ViewComponents/NavigationFooterViewComponent.cs create mode 100644 Web/ViewComponents/NavigationViewComponent.cs create mode 100644 Web/Views/Home/Error.cshtml create mode 100644 Web/Views/Shared/Components/Address/Default.cshtml create mode 100644 Web/Views/Shared/Components/Banner/Default.cshtml create mode 100644 Web/Views/Shared/Components/Footer/Default.cshtml create mode 100644 Web/Views/Shared/Components/Navigation/Default.cshtml create mode 100644 Web/Views/Shared/Components/NavigationFooter/Default.cshtml diff --git a/Data/SurveyContext.cs b/Data/SurveyContext.cs index a616d98..f5f4ec9 100644 --- a/Data/SurveyContext.cs +++ b/Data/SurveyContext.cs @@ -70,6 +70,18 @@ namespace Data .HasKey(a => a.Id); + //modelBuilder.Entity() + // .HasOne(p => p.footer) + // .WithMany() + // .HasForeignKey(p => p.FooterId) + // .IsRequired(false) + // .OnDelete(DeleteBehavior.Cascade); + + + + + + base.OnModelCreating(modelBuilder); } diff --git a/Model/Page.cs b/Model/Page.cs index 2827171..d61832e 100644 --- a/Model/Page.cs +++ b/Model/Page.cs @@ -18,6 +18,11 @@ namespace Model public string? Content { get; set; } + public int FooterId { get; set; } + + [ForeignKey("FooterId")] + public Footer? footer { get; set; } + public int BannerId { get; set; } [ForeignKey("BannerId")] diff --git a/Services/Implemnetation/AddressRepository.cs b/Services/Implemnetation/AddressRepository.cs index ecef870..c95e0cd 100644 --- a/Services/Implemnetation/AddressRepository.cs +++ b/Services/Implemnetation/AddressRepository.cs @@ -48,6 +48,11 @@ namespace Services.Implemnetation return _context.Addresss.ToList(); } + public async Task> GetAddressesAsync() + { + return await _context.Addresss.AsNoTracking().ToListAsync(); + } + public void Update(Address address) { _context.Addresss.Update(address); diff --git a/Services/Implemnetation/BannerRepository.cs b/Services/Implemnetation/BannerRepository.cs index da47504..c47e17c 100644 --- a/Services/Implemnetation/BannerRepository.cs +++ b/Services/Implemnetation/BannerRepository.cs @@ -47,6 +47,11 @@ namespace Services.Implemnetation return _context.Banners.AsNoTracking().Where(x => x.Id == id).FirstOrDefault(); } + public async Task GetBannerByIdAsync(int id) + { + return await _context.Banners.AsNoTracking().Where(x => x.Id == id).FirstOrDefaultAsync(); + } + public async Task> GetBanners() { return await _context.Banners.AsNoTracking().ToListAsync(); diff --git a/Services/Implemnetation/PageRepository.cs b/Services/Implemnetation/PageRepository.cs index 9b59065..e053a9d 100644 --- a/Services/Implemnetation/PageRepository.cs +++ b/Services/Implemnetation/PageRepository.cs @@ -45,11 +45,23 @@ namespace Services.Implemnetation return _context.Pages.Where(x => x.Slug == slug).AsNoTracking().FirstOrDefault(); } + public List GetPageWithAll() + { + + return _context.Pages.Include(x => x.banner).Include(x => x.footer).AsNoTracking().ToList(); + } + public List GetPageWithBanner() { return _context.Pages.Include(x => x.banner).AsNoTracking().ToList(); } + public List GetPageWithFooter() + { + + return _context.Pages.Include(x => x.footer).AsNoTracking().ToList(); + } + public bool SlugExists(string slug, int? pageIdExclude = null) { if (pageIdExclude != null) diff --git a/Services/Interaces/IAddressRepository.cs b/Services/Interaces/IAddressRepository.cs index a0a173a..0ab9cef 100644 --- a/Services/Interaces/IAddressRepository.cs +++ b/Services/Interaces/IAddressRepository.cs @@ -12,6 +12,8 @@ namespace Services.Interaces List
GetAddresses(); + Task> GetAddressesAsync(); + Address GetAddressById(int? id); Task Add(Address address); diff --git a/Services/Interaces/IBannerRepository.cs b/Services/Interaces/IBannerRepository.cs index 9b2415f..05915ff 100644 --- a/Services/Interaces/IBannerRepository.cs +++ b/Services/Interaces/IBannerRepository.cs @@ -15,6 +15,7 @@ namespace Services.Interaces List GetAllBanners(); Banner GetBannerById(int id); + Task GetBannerByIdAsync(int id); Task Add(Banner banner); diff --git a/Services/Interaces/IPageRepository.cs b/Services/Interaces/IPageRepository.cs index 6cdc839..b497ab1 100644 --- a/Services/Interaces/IPageRepository.cs +++ b/Services/Interaces/IPageRepository.cs @@ -19,7 +19,11 @@ namespace Services.Interaces void Update(Page page); + List GetPageWithAll(); + List GetPageWithBanner(); + List GetPageWithFooter(); + Page GetPageSlug(string slug); diff --git a/Web/Areas/Admin/Controllers/PageController.cs b/Web/Areas/Admin/Controllers/PageController.cs index 664e933..bc282b3 100644 --- a/Web/Areas/Admin/Controllers/PageController.cs +++ b/Web/Areas/Admin/Controllers/PageController.cs @@ -11,21 +11,24 @@ namespace Web.Areas.Admin.Controllers { private readonly IPageRepository _pageRepository; private readonly IBannerRepository _bannerRepository; + private readonly IFooterRepository _footerRepository; - public PageController(IPageRepository pageRepository,IBannerRepository bannerRepository) + public PageController(IPageRepository pageRepository,IBannerRepository bannerRepository, IFooterRepository footerRepository) { _pageRepository = pageRepository; _bannerRepository = bannerRepository; + _footerRepository = footerRepository; } public IActionResult Index() { - var pages = _pageRepository.GetPageWithBanner(); + var pages = _pageRepository.GetPageWithAll(); + List result = new List(); foreach (var page in pages) { - result.Add(new PageViewModel { Id = page.Id, Title = page.Title, Slug = page.Slug, banner = page.banner }); + result.Add(new PageViewModel { Id = page.Id, Title = page.Title, Slug = page.Slug, banner = page.banner,Footer=page.footer }); } return View(result); @@ -35,6 +38,7 @@ namespace Web.Areas.Admin.Controllers public IActionResult Create() { ViewBag.DropDownData=GetSidebarsForDropDownList(); + ViewBag.FooterDropDown = GetFooterForDropDownList(); return View(); } @@ -48,6 +52,7 @@ namespace Web.Areas.Admin.Controllers if(!ModelState.IsValid) { ViewBag.DropDownData = GetSidebarsForDropDownList(); + ViewBag.FooterDropDown = GetFooterForDropDownList(); return View(viewmodel); } @@ -64,6 +69,7 @@ namespace Web.Areas.Admin.Controllers { ModelState.AddModelError("", "Title or slug exists"); ViewBag.DropDownData = GetSidebarsForDropDownList(); + ViewBag.FooterDropDown = GetFooterForDropDownList(); return View(viewmodel); } @@ -74,6 +80,8 @@ namespace Web.Areas.Admin.Controllers page.Content = viewmodel.Content; page.banner = viewmodel.banner; page.BannerId = viewmodel.BannerId; + page.footer = viewmodel.Footer; + page.FooterId = viewmodel.FooterId; _pageRepository.Add(page); @@ -96,10 +104,12 @@ namespace Web.Areas.Admin.Controllers Content=pageFromdb.Content, banner=pageFromdb.banner, BannerId=pageFromdb.BannerId, - + Footer = pageFromdb.footer, + FooterId = pageFromdb.FooterId, }; ViewBag.DropDownData = GetSidebarsForDropDownList(); + ViewBag.FooterDropDown = GetFooterForDropDownList(); return View(viewmodel); @@ -112,6 +122,7 @@ namespace Web.Areas.Admin.Controllers { ViewBag.DropDownData = GetSidebarsForDropDownList(); + ViewBag.FooterDropDown = GetFooterForDropDownList(); return View(viewmodel); } @@ -128,6 +139,7 @@ namespace Web.Areas.Admin.Controllers ModelState.AddModelError("", "Title or slug exists"); ViewBag.DropDownData = GetSidebarsForDropDownList(); + ViewBag.FooterDropDown = GetFooterForDropDownList(); return View(viewmodel); } @@ -138,6 +150,8 @@ namespace Web.Areas.Admin.Controllers page.Content = viewmodel.Content; page.banner = viewmodel.banner; page.BannerId = viewmodel.BannerId; + page.footer = viewmodel.Footer; + page.FooterId = viewmodel.FooterId; _pageRepository.Update(page); @@ -165,10 +179,13 @@ namespace Web.Areas.Admin.Controllers Content = pageFromdb.Content, banner = pageFromdb.banner, BannerId = pageFromdb.BannerId, + Footer = pageFromdb.footer, + FooterId = pageFromdb.FooterId, }; ViewBag.DropDownData = GetSidebarsForDropDownList(); + ViewBag.FooterDropDown = GetFooterForDropDownList(); return View(viewmodel); @@ -202,6 +219,20 @@ namespace Web.Areas.Admin.Controllers return dropDown; } + private List GetFooterForDropDownList() + { + var banners = _footerRepository.GetFooter(); + + List dropDown = new List(); + + foreach (var item in banners) + { + dropDown.Add(new SelectListItem { Text = item.Title, Value = item.Id.ToString() }); + } + + return dropDown; + } + } } diff --git a/Web/Areas/Admin/Views/Page/Create.cshtml b/Web/Areas/Admin/Views/Page/Create.cshtml index d4b9ec5..2eaa8d6 100644 --- a/Web/Areas/Admin/Views/Page/Create.cshtml +++ b/Web/Areas/Admin/Views/Page/Create.cshtml @@ -42,9 +42,14 @@ +
+ + + +
diff --git a/Web/Areas/Admin/Views/Page/Delete.cshtml b/Web/Areas/Admin/Views/Page/Delete.cshtml index 4e660a4..223cf99 100644 --- a/Web/Areas/Admin/Views/Page/Delete.cshtml +++ b/Web/Areas/Admin/Views/Page/Delete.cshtml @@ -36,6 +36,12 @@ +
+ + + + +
| Back to list diff --git a/Web/Areas/Admin/Views/Page/Edit.cshtml b/Web/Areas/Admin/Views/Page/Edit.cshtml index 52027b2..a6782fc 100644 --- a/Web/Areas/Admin/Views/Page/Edit.cshtml +++ b/Web/Areas/Admin/Views/Page/Edit.cshtml @@ -37,6 +37,11 @@
+
+ + + +
| Back to list diff --git a/Web/Areas/Admin/Views/Page/Index.cshtml b/Web/Areas/Admin/Views/Page/Index.cshtml index 9322c93..3bcf197 100644 --- a/Web/Areas/Admin/Views/Page/Index.cshtml +++ b/Web/Areas/Admin/Views/Page/Index.cshtml @@ -27,6 +27,7 @@ Title Slug Banner + Footer Action @@ -39,6 +40,7 @@ @item.Title @item.Slug @item.banner?.Title + @item.Footer?.Title Delete | Edit diff --git a/Web/Areas/Admin/Views/Questionnaire/Delete.cshtml b/Web/Areas/Admin/Views/Questionnaire/Delete.cshtml index 87c8c70..13f826c 100644 --- a/Web/Areas/Admin/Views/Questionnaire/Delete.cshtml +++ b/Web/Areas/Admin/Views/Questionnaire/Delete.cshtml @@ -10,11 +10,13 @@ @*
Are you sure you want to delete this questionnaire: @Model.Title
*@
Are you sure you want to delete: + @Html.Raw(Model.Title.Length >= 30 ? Model.Title.Substring(0, 30) : Model.Title) - + - + +
@@ -152,19 +154,24 @@ } }); }); - $(document).ready(function () { - $("#readMoreBtn").click(function () { - $("#readMore").toggle(); - $(this).text(function (_, text) { - return text === "Read More" ? "Read Less" : "Read More"; - }); - }); - }); + + }); - + } \ No newline at end of file diff --git a/Web/Controllers/HomeController.cs b/Web/Controllers/HomeController.cs index f40de82..dd8718e 100644 --- a/Web/Controllers/HomeController.cs +++ b/Web/Controllers/HomeController.cs @@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Mvc; +using Services.Interaces; using System.Diagnostics; using Web.Models; @@ -6,27 +7,36 @@ namespace Web.Controllers { public class HomeController : Controller { - private readonly ILogger _logger; + private readonly IPageRepository _pageRepository; - public HomeController(ILogger logger) + public HomeController(IPageRepository pageRepository) { - _logger = logger; + _pageRepository = pageRepository; } - public IActionResult Index() + public IActionResult Index(string slug) { - return View(); + if (string.IsNullOrEmpty(slug)) + slug = "home"; + + if (!_pageRepository.SlugExists(slug)) + return RedirectToAction(nameof(Error)); + + var pageFromdb = _pageRepository.GetPageSlug(slug); + + TempData["bannerId"] = pageFromdb.BannerId; + TempData["Footer"] = pageFromdb.FooterId; + + + return View(pageFromdb); } - public IActionResult Privacy() - { - return View(); - } + [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] public IActionResult Error() { - return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); + return View(); } } } diff --git a/Web/Extesions/ServicesExtesions.cs b/Web/Extesions/ServicesExtesions.cs index 5d5af46..21c0823 100644 --- a/Web/Extesions/ServicesExtesions.cs +++ b/Web/Extesions/ServicesExtesions.cs @@ -15,6 +15,8 @@ namespace Web.Extesions }); } + + public static void ConfigurePageServices(this IServiceCollection services) { services.AddScoped(); diff --git a/Web/Migrations/20240228172237_Initial.Designer.cs b/Web/Migrations/20240228172237_Initial.Designer.cs deleted file mode 100644 index f89664d..0000000 --- a/Web/Migrations/20240228172237_Initial.Designer.cs +++ /dev/null @@ -1,259 +0,0 @@ -// -using System; -using Data; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace Web.Migrations -{ - [DbContext(typeof(SurveyContext))] - [Migration("20240228172237_Initial")] - partial class Initial - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.2") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("Model.Address", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("CVR") - .HasColumnType("nvarchar(max)"); - - b.Property("City") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Country") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Email") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Mobile") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("PostalCode") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("State") - .HasColumnType("nvarchar(max)"); - - b.Property("Street") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Addresss"); - }); - - modelBuilder.Entity("Model.Banner", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Description") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("ImageUrl") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("LinkUrl") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Title") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Banners"); - }); - - modelBuilder.Entity("Model.Footer", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("CreatedBy") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("ImageUlr") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("LastUpdated") - .HasColumnType("datetime2"); - - b.Property("Name") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Owner") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Sitecopyright") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Title") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("UpdatedBy") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Footers"); - }); - - modelBuilder.Entity("Model.FooterSocialMedia", b => - { - b.Property("FooterId") - .HasColumnType("int"); - - b.Property("SocialId") - .HasColumnType("int"); - - b.HasKey("FooterId", "SocialId"); - - b.HasIndex("SocialId"); - - b.ToTable("FooterSocialMedias"); - }); - - modelBuilder.Entity("Model.Page", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("BannerId") - .HasColumnType("int"); - - b.Property("Content") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Slug") - .HasColumnType("nvarchar(max)"); - - b.Property("Title") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.HasIndex("BannerId"); - - b.ToTable("Pages"); - }); - - modelBuilder.Entity("Model.SocialMedia", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Name") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Url") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("SocialMedia"); - }); - - modelBuilder.Entity("Model.FooterSocialMedia", b => - { - b.HasOne("Model.Footer", "Footer") - .WithMany("FooterSocialMedias") - .HasForeignKey("FooterId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("Model.SocialMedia", "SocialMedia") - .WithMany("FooterSocialMedias") - .HasForeignKey("SocialId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Footer"); - - b.Navigation("SocialMedia"); - }); - - modelBuilder.Entity("Model.Page", b => - { - b.HasOne("Model.Banner", "banner") - .WithMany() - .HasForeignKey("BannerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("banner"); - }); - - modelBuilder.Entity("Model.Footer", b => - { - b.Navigation("FooterSocialMedias"); - }); - - modelBuilder.Entity("Model.SocialMedia", b => - { - b.Navigation("FooterSocialMedias"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Web/Migrations/20240307153635_SurveyModelsAdded.Designer.cs b/Web/Migrations/20240307153635_SurveyModelsAdded.Designer.cs deleted file mode 100644 index 8f3f51d..0000000 --- a/Web/Migrations/20240307153635_SurveyModelsAdded.Designer.cs +++ /dev/null @@ -1,371 +0,0 @@ -// -using System; -using Data; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace Web.Migrations -{ - [DbContext(typeof(SurveyContext))] - [Migration("20240307153635_SurveyModelsAdded")] - partial class SurveyModelsAdded - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.2") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("Model.Address", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("CVR") - .HasColumnType("nvarchar(max)"); - - b.Property("City") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Country") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Email") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Mobile") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("PostalCode") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("State") - .HasColumnType("nvarchar(max)"); - - b.Property("Street") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Addresss"); - }); - - modelBuilder.Entity("Model.Answer", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("QuestionId") - .HasColumnType("int"); - - b.Property("Text") - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.HasIndex("QuestionId"); - - b.ToTable("Answers"); - }); - - modelBuilder.Entity("Model.Banner", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Description") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("ImageUrl") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("LinkUrl") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Title") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Banners"); - }); - - modelBuilder.Entity("Model.Footer", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("CreatedBy") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("ImageUlr") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("LastUpdated") - .HasColumnType("datetime2"); - - b.Property("Name") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Owner") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Sitecopyright") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Title") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("UpdatedBy") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Footers"); - }); - - modelBuilder.Entity("Model.FooterSocialMedia", b => - { - b.Property("FooterId") - .HasColumnType("int"); - - b.Property("SocialId") - .HasColumnType("int"); - - b.HasKey("FooterId", "SocialId"); - - b.HasIndex("SocialId"); - - b.ToTable("FooterSocialMedias"); - }); - - modelBuilder.Entity("Model.Page", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("BannerId") - .HasColumnType("int"); - - b.Property("Content") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Slug") - .HasColumnType("nvarchar(max)"); - - b.Property("Title") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.HasIndex("BannerId"); - - b.ToTable("Pages"); - }); - - modelBuilder.Entity("Model.Question", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("QuestionnaireId") - .HasColumnType("int"); - - b.Property("Text") - .HasColumnType("nvarchar(max)"); - - b.Property("Type") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("QuestionnaireId"); - - b.ToTable("Questions"); - }); - - modelBuilder.Entity("Model.QuestionTypeEntities", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Type") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.ToTable("QuestionTypeEntities"); - }); - - modelBuilder.Entity("Model.Questionnaire", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Description") - .HasColumnType("nvarchar(max)"); - - b.Property("Title") - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Questionnaires"); - }); - - modelBuilder.Entity("Model.SocialMedia", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Name") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Url") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("SocialMedia"); - }); - - modelBuilder.Entity("Model.Answer", b => - { - b.HasOne("Model.Question", "Question") - .WithMany("Answers") - .HasForeignKey("QuestionId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Question"); - }); - - modelBuilder.Entity("Model.FooterSocialMedia", b => - { - b.HasOne("Model.Footer", "Footer") - .WithMany("FooterSocialMedias") - .HasForeignKey("FooterId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("Model.SocialMedia", "SocialMedia") - .WithMany("FooterSocialMedias") - .HasForeignKey("SocialId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Footer"); - - b.Navigation("SocialMedia"); - }); - - modelBuilder.Entity("Model.Page", b => - { - b.HasOne("Model.Banner", "banner") - .WithMany() - .HasForeignKey("BannerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("banner"); - }); - - modelBuilder.Entity("Model.Question", b => - { - b.HasOne("Model.Questionnaire", "Questionnaire") - .WithMany("Questions") - .HasForeignKey("QuestionnaireId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Questionnaire"); - }); - - modelBuilder.Entity("Model.Footer", b => - { - b.Navigation("FooterSocialMedias"); - }); - - modelBuilder.Entity("Model.Question", b => - { - b.Navigation("Answers"); - }); - - modelBuilder.Entity("Model.Questionnaire", b => - { - b.Navigation("Questions"); - }); - - modelBuilder.Entity("Model.SocialMedia", b => - { - b.Navigation("FooterSocialMedias"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Web/Migrations/20240307153635_SurveyModelsAdded.cs b/Web/Migrations/20240307153635_SurveyModelsAdded.cs deleted file mode 100644 index e604974..0000000 --- a/Web/Migrations/20240307153635_SurveyModelsAdded.cs +++ /dev/null @@ -1,108 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Web.Migrations -{ - /// - public partial class SurveyModelsAdded : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "Questionnaires", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - Title = table.Column(type: "nvarchar(max)", nullable: true), - Description = table.Column(type: "nvarchar(max)", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Questionnaires", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "QuestionTypeEntities", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - Type = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_QuestionTypeEntities", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Questions", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - Text = table.Column(type: "nvarchar(max)", nullable: true), - Type = table.Column(type: "int", nullable: false), - QuestionnaireId = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Questions", x => x.Id); - table.ForeignKey( - name: "FK_Questions_Questionnaires_QuestionnaireId", - column: x => x.QuestionnaireId, - principalTable: "Questionnaires", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "Answers", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - Text = table.Column(type: "nvarchar(max)", nullable: true), - QuestionId = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Answers", x => x.Id); - table.ForeignKey( - name: "FK_Answers_Questions_QuestionId", - column: x => x.QuestionId, - principalTable: "Questions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_Answers_QuestionId", - table: "Answers", - column: "QuestionId"); - - migrationBuilder.CreateIndex( - name: "IX_Questions_QuestionnaireId", - table: "Questions", - column: "QuestionnaireId"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "Answers"); - - migrationBuilder.DropTable( - name: "QuestionTypeEntities"); - - migrationBuilder.DropTable( - name: "Questions"); - - migrationBuilder.DropTable( - name: "Questionnaires"); - } - } -} diff --git a/Web/Migrations/20240308144608_DifferntTypeofQuestionAdded.Designer.cs b/Web/Migrations/20240308144608_DifferntTypeofQuestionAdded.Designer.cs deleted file mode 100644 index dacd948..0000000 --- a/Web/Migrations/20240308144608_DifferntTypeofQuestionAdded.Designer.cs +++ /dev/null @@ -1,371 +0,0 @@ -// -using System; -using Data; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace Web.Migrations -{ - [DbContext(typeof(SurveyContext))] - [Migration("20240308144608_DifferntTypeofQuestionAdded")] - partial class DifferntTypeofQuestionAdded - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.2") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("Model.Address", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("CVR") - .HasColumnType("nvarchar(max)"); - - b.Property("City") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Country") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Email") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Mobile") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("PostalCode") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("State") - .HasColumnType("nvarchar(max)"); - - b.Property("Street") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Addresss"); - }); - - modelBuilder.Entity("Model.Answer", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("QuestionId") - .HasColumnType("int"); - - b.Property("Text") - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.HasIndex("QuestionId"); - - b.ToTable("Answers"); - }); - - modelBuilder.Entity("Model.Banner", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Description") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("ImageUrl") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("LinkUrl") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Title") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Banners"); - }); - - modelBuilder.Entity("Model.Footer", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("CreatedBy") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("ImageUlr") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("LastUpdated") - .HasColumnType("datetime2"); - - b.Property("Name") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Owner") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Sitecopyright") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Title") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("UpdatedBy") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Footers"); - }); - - modelBuilder.Entity("Model.FooterSocialMedia", b => - { - b.Property("FooterId") - .HasColumnType("int"); - - b.Property("SocialId") - .HasColumnType("int"); - - b.HasKey("FooterId", "SocialId"); - - b.HasIndex("SocialId"); - - b.ToTable("FooterSocialMedias"); - }); - - modelBuilder.Entity("Model.Page", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("BannerId") - .HasColumnType("int"); - - b.Property("Content") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Slug") - .HasColumnType("nvarchar(max)"); - - b.Property("Title") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.HasIndex("BannerId"); - - b.ToTable("Pages"); - }); - - modelBuilder.Entity("Model.Question", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("QuestionnaireId") - .HasColumnType("int"); - - b.Property("Text") - .HasColumnType("nvarchar(max)"); - - b.Property("Type") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("QuestionnaireId"); - - b.ToTable("Questions"); - }); - - modelBuilder.Entity("Model.QuestionTypeEntities", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Type") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.ToTable("QuestionTypeEntities"); - }); - - modelBuilder.Entity("Model.Questionnaire", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Description") - .HasColumnType("nvarchar(max)"); - - b.Property("Title") - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Questionnaires"); - }); - - modelBuilder.Entity("Model.SocialMedia", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Name") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Url") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("SocialMedia"); - }); - - modelBuilder.Entity("Model.Answer", b => - { - b.HasOne("Model.Question", "Question") - .WithMany("Answers") - .HasForeignKey("QuestionId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Question"); - }); - - modelBuilder.Entity("Model.FooterSocialMedia", b => - { - b.HasOne("Model.Footer", "Footer") - .WithMany("FooterSocialMedias") - .HasForeignKey("FooterId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("Model.SocialMedia", "SocialMedia") - .WithMany("FooterSocialMedias") - .HasForeignKey("SocialId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Footer"); - - b.Navigation("SocialMedia"); - }); - - modelBuilder.Entity("Model.Page", b => - { - b.HasOne("Model.Banner", "banner") - .WithMany() - .HasForeignKey("BannerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("banner"); - }); - - modelBuilder.Entity("Model.Question", b => - { - b.HasOne("Model.Questionnaire", "Questionnaire") - .WithMany("Questions") - .HasForeignKey("QuestionnaireId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Questionnaire"); - }); - - modelBuilder.Entity("Model.Footer", b => - { - b.Navigation("FooterSocialMedias"); - }); - - modelBuilder.Entity("Model.Question", b => - { - b.Navigation("Answers"); - }); - - modelBuilder.Entity("Model.Questionnaire", b => - { - b.Navigation("Questions"); - }); - - modelBuilder.Entity("Model.SocialMedia", b => - { - b.Navigation("FooterSocialMedias"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Web/Migrations/20240308144608_DifferntTypeofQuestionAdded.cs b/Web/Migrations/20240308144608_DifferntTypeofQuestionAdded.cs deleted file mode 100644 index 0ac3556..0000000 --- a/Web/Migrations/20240308144608_DifferntTypeofQuestionAdded.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Web.Migrations -{ - /// - public partial class DifferntTypeofQuestionAdded : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - - } - } -} diff --git a/Web/Migrations/20240323171512_QuestionTypeEntityRemoved.Designer.cs b/Web/Migrations/20240323171512_QuestionTypeEntityRemoved.Designer.cs deleted file mode 100644 index c7582c2..0000000 --- a/Web/Migrations/20240323171512_QuestionTypeEntityRemoved.Designer.cs +++ /dev/null @@ -1,355 +0,0 @@ -// -using System; -using Data; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace Web.Migrations -{ - [DbContext(typeof(SurveyContext))] - [Migration("20240323171512_QuestionTypeEntityRemoved")] - partial class QuestionTypeEntityRemoved - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.2") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("Model.Address", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("CVR") - .HasColumnType("nvarchar(max)"); - - b.Property("City") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Country") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Email") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Mobile") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("PostalCode") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("State") - .HasColumnType("nvarchar(max)"); - - b.Property("Street") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Addresss"); - }); - - modelBuilder.Entity("Model.Answer", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("QuestionId") - .HasColumnType("int"); - - b.Property("Text") - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.HasIndex("QuestionId"); - - b.ToTable("Answers"); - }); - - modelBuilder.Entity("Model.Banner", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Description") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("ImageUrl") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("LinkUrl") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Title") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Banners"); - }); - - modelBuilder.Entity("Model.Footer", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("CreatedBy") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("ImageUlr") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("LastUpdated") - .HasColumnType("datetime2"); - - b.Property("Name") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Owner") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Sitecopyright") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Title") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("UpdatedBy") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Footers"); - }); - - modelBuilder.Entity("Model.FooterSocialMedia", b => - { - b.Property("FooterId") - .HasColumnType("int"); - - b.Property("SocialId") - .HasColumnType("int"); - - b.HasKey("FooterId", "SocialId"); - - b.HasIndex("SocialId"); - - b.ToTable("FooterSocialMedias"); - }); - - modelBuilder.Entity("Model.Page", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("BannerId") - .HasColumnType("int"); - - b.Property("Content") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Slug") - .HasColumnType("nvarchar(max)"); - - b.Property("Title") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.HasIndex("BannerId"); - - b.ToTable("Pages"); - }); - - modelBuilder.Entity("Model.Question", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("QuestionnaireId") - .HasColumnType("int"); - - b.Property("Text") - .HasColumnType("nvarchar(max)"); - - b.Property("Type") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("QuestionnaireId"); - - b.ToTable("Questions"); - }); - - modelBuilder.Entity("Model.Questionnaire", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Description") - .HasColumnType("nvarchar(max)"); - - b.Property("Title") - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Questionnaires"); - }); - - modelBuilder.Entity("Model.SocialMedia", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Name") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Url") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("SocialMedia"); - }); - - modelBuilder.Entity("Model.Answer", b => - { - b.HasOne("Model.Question", "Question") - .WithMany("Answers") - .HasForeignKey("QuestionId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Question"); - }); - - modelBuilder.Entity("Model.FooterSocialMedia", b => - { - b.HasOne("Model.Footer", "Footer") - .WithMany("FooterSocialMedias") - .HasForeignKey("FooterId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("Model.SocialMedia", "SocialMedia") - .WithMany("FooterSocialMedias") - .HasForeignKey("SocialId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Footer"); - - b.Navigation("SocialMedia"); - }); - - modelBuilder.Entity("Model.Page", b => - { - b.HasOne("Model.Banner", "banner") - .WithMany() - .HasForeignKey("BannerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("banner"); - }); - - modelBuilder.Entity("Model.Question", b => - { - b.HasOne("Model.Questionnaire", "Questionnaire") - .WithMany("Questions") - .HasForeignKey("QuestionnaireId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Questionnaire"); - }); - - modelBuilder.Entity("Model.Footer", b => - { - b.Navigation("FooterSocialMedias"); - }); - - modelBuilder.Entity("Model.Question", b => - { - b.Navigation("Answers"); - }); - - modelBuilder.Entity("Model.Questionnaire", b => - { - b.Navigation("Questions"); - }); - - modelBuilder.Entity("Model.SocialMedia", b => - { - b.Navigation("FooterSocialMedias"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Web/Migrations/20240323171512_QuestionTypeEntityRemoved.cs b/Web/Migrations/20240323171512_QuestionTypeEntityRemoved.cs deleted file mode 100644 index ede3426..0000000 --- a/Web/Migrations/20240323171512_QuestionTypeEntityRemoved.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Web.Migrations -{ - /// - public partial class QuestionTypeEntityRemoved : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "QuestionTypeEntities"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "QuestionTypeEntities", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - Type = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_QuestionTypeEntities", x => x.Id); - }); - } - } -} diff --git a/Web/Migrations/20240326164015_QeustionAndAnswerNameAdded.cs b/Web/Migrations/20240326164015_QeustionAndAnswerNameAdded.cs deleted file mode 100644 index b0832c0..0000000 --- a/Web/Migrations/20240326164015_QeustionAndAnswerNameAdded.cs +++ /dev/null @@ -1,54 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Web.Migrations -{ - /// - public partial class QeustionAndAnswerNameAdded : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AlterColumn( - name: "Text", - table: "Questions", - type: "nvarchar(max)", - nullable: false, - defaultValue: "", - oldClrType: typeof(string), - oldType: "nvarchar(max)", - oldNullable: true); - - migrationBuilder.AlterColumn( - name: "Text", - table: "Answers", - type: "nvarchar(max)", - nullable: false, - defaultValue: "", - oldClrType: typeof(string), - oldType: "nvarchar(max)", - oldNullable: true); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.AlterColumn( - name: "Text", - table: "Questions", - type: "nvarchar(max)", - nullable: true, - oldClrType: typeof(string), - oldType: "nvarchar(max)"); - - migrationBuilder.AlterColumn( - name: "Text", - table: "Answers", - type: "nvarchar(max)", - nullable: true, - oldClrType: typeof(string), - oldType: "nvarchar(max)"); - } - } -} diff --git a/Web/Migrations/20240326164756_requiredRevmoedFromQuestionAndAnswer.Designer.cs b/Web/Migrations/20240326164756_requiredRevmoedFromQuestionAndAnswer.Designer.cs deleted file mode 100644 index 137a129..0000000 --- a/Web/Migrations/20240326164756_requiredRevmoedFromQuestionAndAnswer.Designer.cs +++ /dev/null @@ -1,355 +0,0 @@ -// -using System; -using Data; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace Web.Migrations -{ - [DbContext(typeof(SurveyContext))] - [Migration("20240326164756_requiredRevmoedFromQuestionAndAnswer")] - partial class requiredRevmoedFromQuestionAndAnswer - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.2") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("Model.Address", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("CVR") - .HasColumnType("nvarchar(max)"); - - b.Property("City") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Country") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Email") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Mobile") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("PostalCode") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("State") - .HasColumnType("nvarchar(max)"); - - b.Property("Street") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Addresss"); - }); - - modelBuilder.Entity("Model.Answer", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("QuestionId") - .HasColumnType("int"); - - b.Property("Text") - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.HasIndex("QuestionId"); - - b.ToTable("Answers"); - }); - - modelBuilder.Entity("Model.Banner", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Description") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("ImageUrl") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("LinkUrl") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Title") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Banners"); - }); - - modelBuilder.Entity("Model.Footer", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("CreatedBy") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("ImageUlr") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("LastUpdated") - .HasColumnType("datetime2"); - - b.Property("Name") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Owner") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Sitecopyright") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Title") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("UpdatedBy") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Footers"); - }); - - modelBuilder.Entity("Model.FooterSocialMedia", b => - { - b.Property("FooterId") - .HasColumnType("int"); - - b.Property("SocialId") - .HasColumnType("int"); - - b.HasKey("FooterId", "SocialId"); - - b.HasIndex("SocialId"); - - b.ToTable("FooterSocialMedias"); - }); - - modelBuilder.Entity("Model.Page", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("BannerId") - .HasColumnType("int"); - - b.Property("Content") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Slug") - .HasColumnType("nvarchar(max)"); - - b.Property("Title") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.HasIndex("BannerId"); - - b.ToTable("Pages"); - }); - - modelBuilder.Entity("Model.Question", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("QuestionnaireId") - .HasColumnType("int"); - - b.Property("Text") - .HasColumnType("nvarchar(max)"); - - b.Property("Type") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("QuestionnaireId"); - - b.ToTable("Questions"); - }); - - modelBuilder.Entity("Model.Questionnaire", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Description") - .HasColumnType("nvarchar(max)"); - - b.Property("Title") - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Questionnaires"); - }); - - modelBuilder.Entity("Model.SocialMedia", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Name") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Url") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("SocialMedia"); - }); - - modelBuilder.Entity("Model.Answer", b => - { - b.HasOne("Model.Question", "Question") - .WithMany("Answers") - .HasForeignKey("QuestionId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Question"); - }); - - modelBuilder.Entity("Model.FooterSocialMedia", b => - { - b.HasOne("Model.Footer", "Footer") - .WithMany("FooterSocialMedias") - .HasForeignKey("FooterId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("Model.SocialMedia", "SocialMedia") - .WithMany("FooterSocialMedias") - .HasForeignKey("SocialId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Footer"); - - b.Navigation("SocialMedia"); - }); - - modelBuilder.Entity("Model.Page", b => - { - b.HasOne("Model.Banner", "banner") - .WithMany() - .HasForeignKey("BannerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("banner"); - }); - - modelBuilder.Entity("Model.Question", b => - { - b.HasOne("Model.Questionnaire", "Questionnaire") - .WithMany("Questions") - .HasForeignKey("QuestionnaireId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Questionnaire"); - }); - - modelBuilder.Entity("Model.Footer", b => - { - b.Navigation("FooterSocialMedias"); - }); - - modelBuilder.Entity("Model.Question", b => - { - b.Navigation("Answers"); - }); - - modelBuilder.Entity("Model.Questionnaire", b => - { - b.Navigation("Questions"); - }); - - modelBuilder.Entity("Model.SocialMedia", b => - { - b.Navigation("FooterSocialMedias"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Web/Migrations/20240326164756_requiredRevmoedFromQuestionAndAnswer.cs b/Web/Migrations/20240326164756_requiredRevmoedFromQuestionAndAnswer.cs deleted file mode 100644 index 3983474..0000000 --- a/Web/Migrations/20240326164756_requiredRevmoedFromQuestionAndAnswer.cs +++ /dev/null @@ -1,54 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Web.Migrations -{ - /// - public partial class requiredRevmoedFromQuestionAndAnswer : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AlterColumn( - name: "Text", - table: "Questions", - type: "nvarchar(max)", - nullable: true, - oldClrType: typeof(string), - oldType: "nvarchar(max)"); - - migrationBuilder.AlterColumn( - name: "Text", - table: "Answers", - type: "nvarchar(max)", - nullable: true, - oldClrType: typeof(string), - oldType: "nvarchar(max)"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.AlterColumn( - name: "Text", - table: "Questions", - type: "nvarchar(max)", - nullable: false, - defaultValue: "", - oldClrType: typeof(string), - oldType: "nvarchar(max)", - oldNullable: true); - - migrationBuilder.AlterColumn( - name: "Text", - table: "Answers", - type: "nvarchar(max)", - nullable: false, - defaultValue: "", - oldClrType: typeof(string), - oldType: "nvarchar(max)", - oldNullable: true); - } - } -} diff --git a/Web/Migrations/20240326164015_QeustionAndAnswerNameAdded.Designer.cs b/Web/Migrations/20240327153248_DataBaseCreated.Designer.cs similarity index 95% rename from Web/Migrations/20240326164015_QeustionAndAnswerNameAdded.Designer.cs rename to Web/Migrations/20240327153248_DataBaseCreated.Designer.cs index 68f6e25..5fda664 100644 --- a/Web/Migrations/20240326164015_QeustionAndAnswerNameAdded.Designer.cs +++ b/Web/Migrations/20240327153248_DataBaseCreated.Designer.cs @@ -12,8 +12,8 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Web.Migrations { [DbContext(typeof(SurveyContext))] - [Migration("20240326164015_QeustionAndAnswerNameAdded")] - partial class QeustionAndAnswerNameAdded + [Migration("20240327153248_DataBaseCreated")] + partial class DataBaseCreated { /// protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -80,7 +80,6 @@ namespace Web.Migrations .HasColumnType("int"); b.Property("Text") - .IsRequired() .HasColumnType("nvarchar(max)"); b.HasKey("Id"); @@ -201,6 +200,9 @@ namespace Web.Migrations .IsRequired() .HasColumnType("nvarchar(max)"); + b.Property("FooterId") + .HasColumnType("int"); + b.Property("Slug") .HasColumnType("nvarchar(max)"); @@ -212,6 +214,8 @@ namespace Web.Migrations b.HasIndex("BannerId"); + b.HasIndex("FooterId"); + b.ToTable("Pages"); }); @@ -227,7 +231,6 @@ namespace Web.Migrations .HasColumnType("int"); b.Property("Text") - .IsRequired() .HasColumnType("nvarchar(max)"); b.Property("Type") @@ -318,7 +321,15 @@ namespace Web.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + b.HasOne("Model.Footer", "footer") + .WithMany() + .HasForeignKey("FooterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + b.Navigation("banner"); + + b.Navigation("footer"); }); modelBuilder.Entity("Model.Question", b => diff --git a/Web/Migrations/20240228172237_Initial.cs b/Web/Migrations/20240327153248_DataBaseCreated.cs similarity index 66% rename from Web/Migrations/20240228172237_Initial.cs rename to Web/Migrations/20240327153248_DataBaseCreated.cs index 3b59f2a..03dce3a 100644 --- a/Web/Migrations/20240228172237_Initial.cs +++ b/Web/Migrations/20240327153248_DataBaseCreated.cs @@ -6,7 +6,7 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace Web.Migrations { /// - public partial class Initial : Migration + public partial class DataBaseCreated : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) @@ -69,6 +69,20 @@ namespace Web.Migrations table.PrimaryKey("PK_Footers", x => x.Id); }); + migrationBuilder.CreateTable( + name: "Questionnaires", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Title = table.Column(type: "nvarchar(max)", nullable: true), + Description = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Questionnaires", x => x.Id); + }); + migrationBuilder.CreateTable( name: "SocialMedia", columns: table => new @@ -92,6 +106,7 @@ namespace Web.Migrations Title = table.Column(type: "nvarchar(max)", nullable: false), Slug = table.Column(type: "nvarchar(max)", nullable: true), Content = table.Column(type: "nvarchar(max)", nullable: false), + FooterId = table.Column(type: "int", nullable: false), BannerId = table.Column(type: "int", nullable: false) }, constraints: table => @@ -103,6 +118,33 @@ namespace Web.Migrations principalTable: "Banners", principalColumn: "Id", onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Pages_Footers_FooterId", + column: x => x.FooterId, + principalTable: "Footers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Questions", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Text = table.Column(type: "nvarchar(max)", nullable: true), + Type = table.Column(type: "int", nullable: false), + QuestionnaireId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Questions", x => x.Id); + table.ForeignKey( + name: "FK_Questions_Questionnaires_QuestionnaireId", + column: x => x.QuestionnaireId, + principalTable: "Questionnaires", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( @@ -129,6 +171,31 @@ namespace Web.Migrations onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "Answers", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Text = table.Column(type: "nvarchar(max)", nullable: true), + QuestionId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Answers", x => x.Id); + table.ForeignKey( + name: "FK_Answers_Questions_QuestionId", + column: x => x.QuestionId, + principalTable: "Questions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_Answers_QuestionId", + table: "Answers", + column: "QuestionId"); + migrationBuilder.CreateIndex( name: "IX_FooterSocialMedias_SocialId", table: "FooterSocialMedias", @@ -138,6 +205,16 @@ namespace Web.Migrations name: "IX_Pages_BannerId", table: "Pages", column: "BannerId"); + + migrationBuilder.CreateIndex( + name: "IX_Pages_FooterId", + table: "Pages", + column: "FooterId"); + + migrationBuilder.CreateIndex( + name: "IX_Questions_QuestionnaireId", + table: "Questions", + column: "QuestionnaireId"); } /// @@ -146,6 +223,9 @@ namespace Web.Migrations migrationBuilder.DropTable( name: "Addresss"); + migrationBuilder.DropTable( + name: "Answers"); + migrationBuilder.DropTable( name: "FooterSocialMedias"); @@ -153,13 +233,19 @@ namespace Web.Migrations name: "Pages"); migrationBuilder.DropTable( - name: "Footers"); + name: "Questions"); migrationBuilder.DropTable( name: "SocialMedia"); migrationBuilder.DropTable( name: "Banners"); + + migrationBuilder.DropTable( + name: "Footers"); + + migrationBuilder.DropTable( + name: "Questionnaires"); } } } diff --git a/Web/Migrations/SurveyContextModelSnapshot.cs b/Web/Migrations/SurveyContextModelSnapshot.cs index 186ba09..3dcf5a5 100644 --- a/Web/Migrations/SurveyContextModelSnapshot.cs +++ b/Web/Migrations/SurveyContextModelSnapshot.cs @@ -197,6 +197,9 @@ namespace Web.Migrations .IsRequired() .HasColumnType("nvarchar(max)"); + b.Property("FooterId") + .HasColumnType("int"); + b.Property("Slug") .HasColumnType("nvarchar(max)"); @@ -208,6 +211,8 @@ namespace Web.Migrations b.HasIndex("BannerId"); + b.HasIndex("FooterId"); + b.ToTable("Pages"); }); @@ -313,7 +318,15 @@ namespace Web.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + b.HasOne("Model.Footer", "footer") + .WithMany() + .HasForeignKey("FooterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + b.Navigation("banner"); + + b.Navigation("footer"); }); modelBuilder.Entity("Model.Question", b => diff --git a/Web/Program.cs b/Web/Program.cs index 6605168..cd5c99e 100644 --- a/Web/Program.cs +++ b/Web/Program.cs @@ -5,6 +5,7 @@ using Microsoft.Extensions.DependencyInjection; using Services.Implemnetation; using Services.Interaces; using Web.Extesions; +using Web.ViewComponents; var builder = WebApplication.CreateBuilder(args); @@ -20,7 +21,7 @@ builder.Services.AddDbContext(options => }); -//builder.Services.ConfigureSQLConnection(builder.Configuration); + builder.Services.ConfigurePageServices(); builder.Services.ConfigureBannerServices(); @@ -30,6 +31,7 @@ builder.Services.ConfigureFooter(); builder.Services.ConfigureQuestionnarie(); builder.Services.ConfigureQuestion(); builder.Services.AddScoped(); +builder.Services.AddTransient(); var app = builder.Build(); @@ -49,6 +51,11 @@ app.UseRouting(); app.UseAuthorization(); +app.MapControllerRoute( + name: "page", + pattern: "{slug}", defaults: new { Controller = "Home", Action = "Index" }); + + app.MapAreaControllerRoute( name: "MyAdminArea", areaName:"admin", diff --git a/Web/ViewComponents/AddressViewComponent.cs b/Web/ViewComponents/AddressViewComponent.cs new file mode 100644 index 0000000..b4962df --- /dev/null +++ b/Web/ViewComponents/AddressViewComponent.cs @@ -0,0 +1,24 @@ +using Microsoft.AspNetCore.Mvc; +using Services.Implemnetation; +using Services.Interaces; + +namespace Web.ViewComponents +{ + public class AddressViewComponent:ViewComponent + { + private readonly IAddressRepository _addressRepository; + + public AddressViewComponent(IAddressRepository addressRepository) + { + _addressRepository = addressRepository; + } + + public async Task InvokeAsync() + { + + var address = await _addressRepository.GetAddressesAsync(); + + return View(address); + } + } +} diff --git a/Web/ViewComponents/BannerViewComponent.cs b/Web/ViewComponents/BannerViewComponent.cs new file mode 100644 index 0000000..4a97d54 --- /dev/null +++ b/Web/ViewComponents/BannerViewComponent.cs @@ -0,0 +1,25 @@ +using Microsoft.AspNetCore.Mvc; +using Services.Interaces; + +namespace Web.ViewComponents +{ + public class BannerViewComponent:ViewComponent + { + + private readonly IBannerRepository _bannerRepository; + + public BannerViewComponent(IBannerRepository bannerRepository) + { + + _bannerRepository = bannerRepository; + } + + public async Task InvokeAsync() + { + int bannerId = (int)TempData["bannerId"]; + var Banner = await _bannerRepository.GetBannerByIdAsync(bannerId); + + return View(Banner); + } + } +} diff --git a/Web/ViewComponents/FooterViewComponent.cs b/Web/ViewComponents/FooterViewComponent.cs new file mode 100644 index 0000000..4d8142c --- /dev/null +++ b/Web/ViewComponents/FooterViewComponent.cs @@ -0,0 +1,52 @@ +using Microsoft.AspNetCore.Mvc; +using Services.Implemnetation; +using Services.Interaces; + +namespace Web.ViewComponents +{ + public class FooterViewComponent:ViewComponent + { + private readonly IFooterRepository _footerRepository; + + public FooterViewComponent(IFooterRepository footerRepository) + { + _footerRepository = footerRepository; + } + + + public IViewComponentResult Invoke() + { + if (!TempData.ContainsKey("Footer")) + { + // Handle the case where "Footer" is not found in TempData + // For example, return a default view or perform a different action + return View("DefaultFooterView"); // Return a default view named "DefaultFooterView" + } + + if (!int.TryParse(TempData["Footer"].ToString(), out int footerId)) + { + // Handle the case where "Footer" value is not a valid integer + // For example, return a default view or perform a different action + return View("DefaultFooterView"); // Return a default view named "DefaultFooterView" + } + + var footer = _footerRepository.GetFooterByIdWithSocialMedia(footerId); + + if (footer == null) + { + // Handle the case where the footer is not found + // For example, return a default view or perform a different action + return View("DefaultFooterView"); // Return a default view named "DefaultFooterView" + } + + return View(footer); + } + + //public IViewComponentResult Invoke() + //{ + // int footerId = (int)TempData["bannerId"]; + // var footer = _footerRepository.GetFooterById(footerId); + // return View(footer); + //} + } +} diff --git a/Web/ViewComponents/NavigationFooterViewComponent.cs b/Web/ViewComponents/NavigationFooterViewComponent.cs new file mode 100644 index 0000000..d2b470e --- /dev/null +++ b/Web/ViewComponents/NavigationFooterViewComponent.cs @@ -0,0 +1,20 @@ +using Microsoft.AspNetCore.Mvc; +using Services.Interaces; + +namespace Web.ViewComponents +{ + public class NavigationFooterViewComponent:ViewComponent + { + private readonly IPageRepository _pageRepository; + + public NavigationFooterViewComponent(IPageRepository pageRepository) + { + _pageRepository = pageRepository; + } + public async Task InvokeAsync() + { + var pages = await _pageRepository.GetPages(); + return View(pages); + } + } +} diff --git a/Web/ViewComponents/NavigationViewComponent.cs b/Web/ViewComponents/NavigationViewComponent.cs new file mode 100644 index 0000000..87ffcca --- /dev/null +++ b/Web/ViewComponents/NavigationViewComponent.cs @@ -0,0 +1,21 @@ +using Microsoft.AspNetCore.Mvc; +using Services.Interaces; + +namespace Web.ViewComponents +{ + public class NavigationViewComponent:ViewComponent + { + private readonly IPageRepository _pageRepository; + + public NavigationViewComponent(IPageRepository pageRepository) + { + _pageRepository = pageRepository; + } + + public async Task InvokeAsync() + { + var pages = await _pageRepository.GetPages(); + return View(pages); + } + } +} diff --git a/Web/ViewModel/PageVM/PageViewModel.cs b/Web/ViewModel/PageVM/PageViewModel.cs index caae9a0..71b1217 100644 --- a/Web/ViewModel/PageVM/PageViewModel.cs +++ b/Web/ViewModel/PageVM/PageViewModel.cs @@ -15,6 +15,13 @@ namespace Web.ViewModel.PageVM public string? Content { get; set; } + [DisplayName("Footer")] + public int FooterId { get; set; } + + [ForeignKey("FooterId")] + public Footer? Footer { get; set; } + + [DisplayName("Banner")] public int BannerId { get; set; } diff --git a/Web/ViewModel/QuestionnaireVM/EditQuestionnaireViewModel.cs b/Web/ViewModel/QuestionnaireVM/EditQuestionnaireViewModel.cs index 943a9ab..c421ff7 100644 --- a/Web/ViewModel/QuestionnaireVM/EditQuestionnaireViewModel.cs +++ b/Web/ViewModel/QuestionnaireVM/EditQuestionnaireViewModel.cs @@ -13,7 +13,7 @@ namespace Web.ViewModel.QuestionnaireVM [Required] [Display(Name ="Questionnaire title")] - [StringLength(100, ErrorMessage = "Title must be between 1 and 40 characters.", MinimumLength = 1)] + [StringLength(40, ErrorMessage = "Title must be between 1 and 40 characters.", MinimumLength = 1)] public string? Title { get; set; } [Required] public string? Description { get; set; } diff --git a/Web/ViewModel/QuestionnaireVM/QuestionnaireViewModel.cs b/Web/ViewModel/QuestionnaireVM/QuestionnaireViewModel.cs index 6ecaf45..7547d06 100644 --- a/Web/ViewModel/QuestionnaireVM/QuestionnaireViewModel.cs +++ b/Web/ViewModel/QuestionnaireVM/QuestionnaireViewModel.cs @@ -15,7 +15,7 @@ namespace Web.ViewModel.QuestionnaireVM } public int Id { get; set; } [Required] - [StringLength(100, ErrorMessage = "Title must be between 1 and 40 characters.", MinimumLength = 1)] + [StringLength(40, ErrorMessage = "Title must be between 1 and 40 characters.", MinimumLength = 1)] public string? Title { get; set; } [Required] public string? Description { get; set; } diff --git a/Web/Views/Home/Error.cshtml b/Web/Views/Home/Error.cshtml new file mode 100644 index 0000000..2ee8078 --- /dev/null +++ b/Web/Views/Home/Error.cshtml @@ -0,0 +1,6 @@ +@{ + ViewData["Title"] = "Home Page"; +} +

Error

+ +

Something went wrong.....

\ No newline at end of file diff --git a/Web/Views/Home/Index.cshtml b/Web/Views/Home/Index.cshtml index 1b139c5..efc33b3 100644 --- a/Web/Views/Home/Index.cshtml +++ b/Web/Views/Home/Index.cshtml @@ -1,42 +1,35 @@ -@{ +@model Page +@{ ViewData["Title"] = "Home Page"; } -