Skip to content

C# Standard Class Library that perform CRUD on IList <T> while tracking Edit State and Validations

License

Notifications You must be signed in to change notification settings

Sharaf-Mansour/HappyCrud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HappyCrud

C# Standard Class Library that perform CRUD on IList <T> while tracking Edit State and Validations

nuget

Functions

here is all the Functions and their useage in HappyCRUD

using HappyCRUD; //Using HappyCRUD 
List<Education> list = new(); //Create List of T
list.Create(); //Create new item in List and enables Edit State
list.CreateHere(1); //Create new item in a given index in List and enables Edit State
list.CreateHere(); //Create new item at the start of the List and enables Edit State
list.Cancel(); //Shut down the edit state and restore previous state 
list.Delete(); //Shut down the edit state and delete the item
list.Save(); //shut down the edit state and save the item
list.MoveUp(1); //Takes item via index and move it up
list.MoveDown(0); //Takes item via index and move it down
list.MoveTo(1,5); //Takes item via index and move it to an index then shift the others down
list.SwapWith(1,5); //Takes item via index and Swap it with other item at given index
list.StartEdit(1); //Stat edit state for item via index
list.IsModelValid(); // checks if all items in list is valid
list.First().InEditState = default; //Checks if item is in edit state 
CRUD.IsInEditState = default; //Checks if there is any item is in edit state in the whole model. 

Blazor Example

To Create item.

  <button type="button" class="btn btn-primary"  @onclick="()=>CVModel.CV.Educations.Create()">Add Education</button>

To Cancel, Save or Delete

@if (CVModel.CV.Educations[j].InEditState)
  {                   
      <button type="button" class="btn btn-outline-dark" @onclick="()=>CVModel.CV.Educations.Cancel()">Cancel</button>
      <button type="button" class="btn btn-outline-success" @onclick="()=>CVModel.CV.Educations.Save()">Save</button>
      <button type="button" class="btn btn-outline-danger" @onclick="()=>CVModel.CV.Educations.Delete()">Delete</button>
  }

To edit or move item up and down

@if (!CRUD.IsInEditState)
  {
     @if(!CVModel.CV.Educations[j].InEditState)
       {
          <button type="button" class="btn btn-primary" @onclick="()=>CVModel.CV.Educations.MoveUp(j)">&uarr;</button>
          <button type="button" class="btn btn-primary" @onclick="()=>CVModel.CV.Educations.MoveDown(j)">&darr; </button>
          <button type="button" class="btn btn-primary"  @onclick="()=>CVModel.CV.Educations.StartEdit(j)">Edit </button>
       }
  }   

bind to edit value

@if( CVModel.CV.Educations[j].InEditState )
  {
      <div class="form-group">
        <label>School Name</label>
         <InputText class="form-control" id="LocationName"  @bind-Value="CVModel.CV.Educations![j].LocationName"/>
         <ValidationMessage For="@(()=> CVModel.CV.Educations![j].LocationName)" />
      </div> 
      <div class="form-group">
         <label>Year</label>
         <InputText class="form-control" id="Year" @bind-Value="CVModel.CV.Educations![j].Year"/>
         <ValidationMessage For="@(()=> CVModel.CV.Educations![j].Year)" />
     </div>
  }
else
  {
     <div class="form-group">
         <label>School Name</label>
         <label class="form-control" id="LocationName">@CVModel.CV.Educations![j].LocationName</label>
         <ValidationMessage For="@(()=> CVModel.CV.Educations![j].LocationName)" />
    </div> 
    <div class="form-group">
         <label>Year</label>
         <label class="form-control" id="LocationName">@CVModel.CV.Educations![j].Year</label>
          <ValidationMessage For="@(()=> CVModel.CV.Educations![j].Year)" />
     </div>    
  }

Model Sample

IValidation Interfaces

using HappyCRUD;
     public class Education : IValidation
    {
        public virtual string? LocationName { get; set; }
        public string? Year { get; set; }
        public bool IsValid() => !string.IsNullOrWhiteSpace(LocationName) && !string.IsNullOrWhiteSpace(Year);
        public bool InEditState { get; set; }
    }

Model Sample Extra

HappyCRUD

About

C# Standard Class Library that perform CRUD on IList <T> while tracking Edit State and Validations

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages