Skip to content
Snippets Groups Projects
Commit d53dfe31 authored by gabor's avatar gabor
Browse files

Add Submission entity, cleanup

parent a4d04952
No related branches found
No related tags found
No related merge requests found
......@@ -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
......@@ -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 ProductForm(string id, string title)
public readonly List<Submission> Submissions = new();
public ProductForm(string id, string title, List<Field> fields)
{
Id = id;
Title = title;
Fields = fields;
}
}
\ No newline at end of file
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
@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">
<a asp-page="SubmitForm" asp-route-id="@productForm.Id">
<h5 class="card-title m-0 me-3">@productForm.Title</h5>
<a class="btn btn-outline-primary">Kitöltés</a>
</a>
<a class="btn btn-outline-primary mx-1" asp-page="SubmittedForms" asp-route-id="@productForm.Id">Submissions</a>
</div>
</div>
</div>
......
......@@ -6,25 +6,10 @@ namespace Rendelosch.Pages;
public class Index : PageModel
{
private readonly IProductFormRepository _repository;
public IProductFormRepository Repository { get; }
public Index(IProductFormRepository repository)
{
_repository = repository;
}
public IProductFormRepository GetRepository()
{
return _repository;
}
public void OnGet()
{
}
public void OnPost()
{
Repository = repository;
}
}
\ No newline at end of file
......@@ -6,7 +6,12 @@ public interface IProductFormRepository
{
public List<ProductForm> GetProductForms();
public string CreateProductForm(string formTitle);
public ProductForm? GetProductForm(string formId);
public bool AddFieldToProductForm(string formId, string fieldName);
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
......@@ -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 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 false;
form.Fields.Add(new Field(fieldName));
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment