diff --git a/Rendelosch/Models/Field.cs b/Rendelosch/Models/Field.cs index 9eb347581492712b7330c78f11050f20fe1b6516..16a9f253439f7a7c98a96f0e206472b1764c989a 100644 --- a/Rendelosch/Models/Field.cs +++ b/Rendelosch/Models/Field.cs @@ -2,10 +2,13 @@ public class Field { + public readonly string Key; + public readonly string Name; - public Field(string name) + public Field(string key, string name) { + Key = key; Name = name; } } \ No newline at end of file diff --git a/Rendelosch/Models/ProductForm.cs b/Rendelosch/Models/ProductForm.cs index 6a689ca84587eeef5664cdae1e09af07ccc84c01..e97fe59d5b3c99b6087b2787c23d1a7ff8cf5372 100644 --- a/Rendelosch/Models/ProductForm.cs +++ b/Rendelosch/Models/ProductForm.cs @@ -5,11 +5,14 @@ public class ProductForm public readonly string Id; public readonly string Title; - public readonly List<Field> Fields = new(); + public readonly List<Field> Fields; + + public readonly List<Submission> Submissions = new(); - public ProductForm(string id, string title) + public ProductForm(string id, string title, List<Field> fields) { Id = id; Title = title; + Fields = fields; } } \ No newline at end of file diff --git a/Rendelosch/Models/Submission.cs b/Rendelosch/Models/Submission.cs new file mode 100644 index 0000000000000000000000000000000000000000..3053b02ef044c5e1448cbaff11bab7a7e59361ef --- /dev/null +++ b/Rendelosch/Models/Submission.cs @@ -0,0 +1,14 @@ +namespace Rendelosch.Models; + +public class Submission +{ + public readonly string Id; + + public readonly Dictionary<Field, string> FieldData; + + public Submission(string id, Dictionary<Field, string> fieldData) + { + Id = id; + FieldData = fieldData; + } +} \ No newline at end of file diff --git a/Rendelosch/Pages/Index.cshtml b/Rendelosch/Pages/Index.cshtml index 8a1ca94b4414cf51bfc58ae892b261efbdcc79d9..01e97a7975b8df7c3d5d168340bcd5b23d080528 100644 --- a/Rendelosch/Pages/Index.cshtml +++ b/Rendelosch/Pages/Index.cshtml @@ -1,22 +1,22 @@ @page @model Rendelosch.Pages.Index @{ - ViewData["Title"] = "Index"; + ViewData["Title"] = "Home"; } <div class="container-lg"> - <form method="post"> - <a class="btn btn-primary my-4">Új űrlap létrehozása</a> - </form> + <a class="btn btn-primary my-4" asp-page="CreateProductForm">Create Product Form</a> <div> @{ - foreach (var productForm in Model.GetRepository().GetProductForms()) + foreach (var productForm in Model.Repository.GetProductForms()) { <div class="card mb-3"> <div class="card-body"> <div class="d-flex flex-row align-items-center"> - <h5 class="card-title m-0 me-3">@productForm.Title</h5> - <a class="btn btn-outline-primary">Kitöltés</a> + <a asp-page="SubmitForm" asp-route-id="@productForm.Id"> + <h5 class="card-title m-0 me-3">@productForm.Title</h5> + </a> + <a class="btn btn-outline-primary mx-1" asp-page="SubmittedForms" asp-route-id="@productForm.Id">Submissions</a> </div> </div> </div> diff --git a/Rendelosch/Pages/Index.cshtml.cs b/Rendelosch/Pages/Index.cshtml.cs index e99ba2dde0947114b5bbcd626269d421345f0326..cd24ff22caa2b42495a643046fb4fcb3c1b97766 100644 --- a/Rendelosch/Pages/Index.cshtml.cs +++ b/Rendelosch/Pages/Index.cshtml.cs @@ -6,25 +6,10 @@ namespace Rendelosch.Pages; public class Index : PageModel { - private readonly IProductFormRepository _repository; - - public Index(IProductFormRepository repository) - { - _repository = repository; - } + public IProductFormRepository Repository { get; } - public IProductFormRepository GetRepository() - { - return _repository; - } - - public void OnGet() - { - - } - - public void OnPost() + public Index(IProductFormRepository repository) { - + Repository = repository; } } \ No newline at end of file diff --git a/Rendelosch/Repository/IProductFormRepository.cs b/Rendelosch/Repository/IProductFormRepository.cs index e88bc38c3b86fb7a72de33f9bf16ebd9c31434e1..c4b55bb89ef3628905758590386df7f488556bd5 100644 --- a/Rendelosch/Repository/IProductFormRepository.cs +++ b/Rendelosch/Repository/IProductFormRepository.cs @@ -5,8 +5,13 @@ namespace Rendelosch.Repository; public interface IProductFormRepository { public List<ProductForm> GetProductForms(); - - public string CreateProductForm(string formTitle); - public bool AddFieldToProductForm(string formId, string fieldName); + public ProductForm? GetProductForm(string formId); + + public ProductForm CreateProductForm(string formTitle, List<Field> formFields); + + + public List<Submission>? GetSubmissionsForProductForm(string formId); + + public Submission? AddSubmissionToProductForm(string formId, Dictionary<string, string> fieldData); } \ No newline at end of file diff --git a/Rendelosch/Repository/MemoryProductFormRepository.cs b/Rendelosch/Repository/MemoryProductFormRepository.cs index 683cac49c1c95ee7d41904731be7791b87403f0c..32011b354f3015345a9dead212fa02236c3d79bb 100644 --- a/Rendelosch/Repository/MemoryProductFormRepository.cs +++ b/Rendelosch/Repository/MemoryProductFormRepository.cs @@ -8,20 +8,54 @@ public class MemoryProductFormRepository : IProductFormRepository public MemoryProductFormRepository() { - var sampleForm1 = new ProductForm(Guid.NewGuid().ToString(), "DevTeam pulcsi"); - sampleForm1.Fields.Add(new Field("Név")); - sampleForm1.Fields.Add(new Field("Email")); - sampleForm1.Fields.Add(new Field("Méret (XS/S/M/L/XL/XXL)")); - - var sampleForm2 = new ProductForm(Guid.NewGuid().ToString(), "DevTeam kiskacsa"); - sampleForm2.Fields.Add(new Field("Név")); - sampleForm2.Fields.Add(new Field("Email")); - sampleForm2.Fields.Add(new Field("Telefonszám")); - sampleForm2.Fields.Add(new Field("Szín (sárga/zöld/kék)")); - sampleForm2.Fields.Add(new Field("Megjegyzés")); - + var form1Fields = new List<Field> + { + new Field("name", "Név"), + new Field("email", "Email"), + new Field("size", "Méret (XS/S/M/L/XL/XXL)") + }; + var sampleForm1 = new ProductForm("551d6601-7f08-4bd5-ab3a-a391c171e188", "DevTeam pulcsi", form1Fields); _productForms.Add(sampleForm1); + + var form2Fields = new List<Field> + { + new Field("name", "Név"), + new Field("email", "Email"), + new Field("phone_number", "Telefonszám"), + new Field("colour", "Szín (sárga/zöld/kék)"), + new Field("note", "Megjegyzés") + }; + var sampleForm2 = new ProductForm("64996c3e-51ca-444a-90ec-b387f73a84ed", "DevTeam kiskacsa", form2Fields); _productForms.Add(sampleForm2); + + var sampleSubmission1FieldData = new Dictionary<Field, string> + { + { sampleForm1.Fields[0], "Kovács Béla" }, + { sampleForm1.Fields[1], "asd@gmail.com" }, + { sampleForm1.Fields[2], "M" } + }; + var sampleSubmission1 = new Submission("ce9a1a9e-1123-464d-a3ec-740058502f6d", sampleSubmission1FieldData); + sampleForm1.Submissions.Add(sampleSubmission1); + + var sampleSubmission2FieldData = new Dictionary<Field, string> + { + { sampleForm2.Fields[0], "Teszt Elek" }, + { sampleForm2.Fields[1], "erogr@sd.hu" }, + { sampleForm2.Fields[2], "06301234567" }, + { sampleForm2.Fields[3], "zöld" }, + { sampleForm2.Fields[4], "Rántotta" } + }; + var sampleSubmission2 = new Submission("d84cf551-96cc-4620-962f-023fefa94b2f", sampleSubmission2FieldData); + sampleForm2.Submissions.Add(sampleSubmission2); + + var sampleSubmission3FieldData = new Dictionary<Field, string> + { + { sampleForm1.Fields[0], "kisegér" }, + { sampleForm1.Fields[1], "123123" }, + { sampleForm1.Fields[2], "óriási, hatalmas, leviatán" } + }; + var sampleSubmission3 = new Submission("106a67ca-acc0-42b5-9a40-18f12a6c7aa1", sampleSubmission3FieldData); + sampleForm1.Submissions.Add(sampleSubmission3); } public List<ProductForm> GetProductForms() @@ -29,19 +63,44 @@ public class MemoryProductFormRepository : IProductFormRepository return _productForms; } - public string CreateProductForm(string formTitle) + public ProductForm? GetProductForm(string formId) { - var guid = Guid.NewGuid().ToString(); - _productForms.Add(new ProductForm(guid, formTitle)); - return guid; + return _productForms.Find(f => f.Id == formId); } - public bool AddFieldToProductForm(string formId, string fieldName) + public ProductForm CreateProductForm(string formTitle, List<Field> formFields) + { + var newForm = new ProductForm(Guid.NewGuid().ToString(), formTitle, formFields); + _productForms.Add(newForm); + return newForm; + } + + public List<Submission>? GetSubmissionsForProductForm(string formId) { var form = _productForms.Find(f => f.Id == formId); - if (form == null) return false; - form.Fields.Add(new Field(fieldName)); + if (form == null) return null; + + return form.Submissions; + } + + public Submission? AddSubmissionToProductForm(string formId, Dictionary<string, string> fieldData) + { + // find form + var form = _productForms.Find(f => f.Id == formId); + if (form == null) return null; + + // construct submission field data + var submissionFieldData = new Dictionary<Field, string>(); + foreach (var (key, value) in fieldData) + { + // find field in form + var field = form.Fields.Find(f => f.Key == key); + if (field == null) return null; + submissionFieldData.Add(field, value); + } - return true; + var submission = new Submission(Guid.NewGuid().ToString(), submissionFieldData); + form.Submissions.Add(submission); + return submission; } } \ No newline at end of file