@page "/addtemplate/{id:int}"
@if (step == 0)
{
//Template list
}
else if (step == 1)
{
@if (model.Id == 0)
{
}
else
{
}
}
else if (step == 2)
{
@if (model.Id == 0)
{
}
else
{
}
}
@using SeaHavenIndustries.Components.Layout
@using SeaHavenIndustries.Data.IRepository;
@inject ISettingsRepository _service;
@inject IWorkOrderRepository _serviceworkorder;
@using Microsoft.JSInterop
@using SeaHavenIndustries.ViewModel
@using System.Text.Json
@using global::Data.SeaHavenIndustries
@inject IJSRuntime JSRuntime
@inject NavigationManager Navigation
@code {
private bool isLoading = true;
private int step = 0;
private ModalDialog? ModalDialog { get; set; }
[Parameter]
public int? id { get; set; }
private WorkOrder model = new();
private List? templates { get; set; }
private IEnumerable? users { get; set; }
private IEnumerable? userslist { get; set; }
private IEnumerable? category { get; set; }
private IEnumerable? categorylist { get; set; }
private IEnumerable? locations { get; set; }
private IEnumerable? locationslist { get; set; }
private IEnumerable? contacts { get; set; }
private IEnumerable? contactslist { get; set; }
private List files = new List();
List? workordercontacts = new List();
List? workordercategories = new List();
protected override async Task OnParametersSetAsync()
{
var result = await _service.GetTemplates();
if (result != null)
{
templates = result;
}
}
protected void LoadcontactData(LoadDataArgs args)
{
var query = contactslist;
if (!string.IsNullOrEmpty(args.Filter))
{
query = query.Where(c => (c.FirstName + " " + c.LastName).ToLower().Contains(args.Filter.ToLower()));
}
if (query != null)
{
contacts = query.ToList();
}
InvokeAsync(StateHasChanged);
}
protected void LoadUserData(LoadDataArgs args)
{
var query = userslist;
if (!string.IsNullOrEmpty(args.Filter))
{
query = query.Where(c => c.FirstName.ToLower().Contains(args.Filter.ToLower())).ToList();
}
if (query != null)
{
users = query.ToList();
}
InvokeAsync(StateHasChanged);
}
protected void LoadLocationData(LoadDataArgs args)
{
var query = locationslist;
if (!string.IsNullOrEmpty(args.Filter))
{
query = query.Where(c => c.Name.ToLower().Contains(args.Filter.ToLower()));
}
if (query != null)
{
locations = query.ToList();
}
InvokeAsync(StateHasChanged);
}
protected void LoadcategoryData(LoadDataArgs args)
{
var query = categorylist;
if (!string.IsNullOrEmpty(args.Filter))
{
query = query.Where(c => c.Name.ToLower().Contains(args.Filter.ToLower()));
}
if (query != null)
{
category = query.ToList();
}
InvokeAsync(StateHasChanged);
}
private string signaturePreview = string.Empty;
private string signatureData = string.Empty;
private IJSObjectReference signaturePad;
protected async Task SaveSignature()
{
signatureData = await signaturePad.InvokeAsync("toDataURL");
UpdateSignaturePreview();
}
private void UpdateSignaturePreview()
{
var base64Index = signatureData.IndexOf("base64,", StringComparison.OrdinalIgnoreCase);
if (base64Index != -1)
{
// Skip "base64," to get the actual base64-encoded string
var base64String = signatureData.Substring(base64Index + 7);
signaturePreview = $"data:image/png;base64,{base64String}";
}
else
{
Console.WriteLine("Invalid signatureData format");
}
}
[JSInvokable]
public static Task UpdateSignatureData(string signatureData)
{
return Task.CompletedTask;
}
protected async Task SaveData()
{
try
{
model.SignOffSignature = await signaturePad.InvokeAsync("toDataURL");
}
catch
{
}
model.istemplate = true;
model.WorkOrderContacts = null;
model.WorkOrderContacts = model.WorkOrderContacts == null ? new List() : model.WorkOrderContacts;
foreach (var itm in workordercontacts)
{
model.WorkOrderContacts.Add(new WorkOrderContacts { ContactId = itm });
}
model.WorkOrderCategories = null;
model.WorkOrderCategories = model.WorkOrderCategories == null ? new List() : model.WorkOrderCategories;
foreach (var itm in workordercategories)
{
model.WorkOrderCategories.Add(new WorkOrderCategories { CategoryId = itm });
}
var res = await _serviceworkorder.Addworkorder(model, files);
if (res == "success")
{
await ShowSweetAlert("Sucessfully Saved Data", "success");
var result = await _service.GetTemplates();
if (result != null)
{
templates = result;
step = 0;
}
}
else
{
await ShowSweetAlert(res, "error");
}
}
private int eid = 0;
protected async Task Edit(int id)
{
if (id != 0)
{
eid = id;
step = 1;
}
await InvokeAsync(StateHasChanged);
}
protected async Task View(int id)
{
if (id != 0)
{
eid = id;
step = 2;
}
await InvokeAsync(StateHasChanged);
}
protected async void OpenPopup()
{
ModalDialog.Open();
await JSRuntime.InvokeVoidAsync("initializedsignature1");
var canvasElement = await JSRuntime.InvokeAsync("document.querySelector", "#signatureCanvas1");
await canvasElement.InvokeVoidAsync("setAttribute", "data-signature-pad", "new SignaturePad()");
signaturePad = canvasElement;
await signaturePad.InvokeVoidAsync("addEventListener", "change", DotNetObjectReference.Create(this));
}
protected void ClosePopup()
{
ModalDialog.Close();
}
private async Task HandleFileUpload(InputFileChangeEventArgs e)
{
var imageFile = e.File;
files.Add(new FileUploadViewModel { file = imageFile, Name = "attachment1" });
}
private async Task HandleFileUpload1(InputFileChangeEventArgs e)
{
var imageFile = e.File;
files.Add(new FileUploadViewModel { file = imageFile, Name = "attachment2" });
}
private async Task HandleFileUpload2(InputFileChangeEventArgs e)
{
var imageFile = e.File;
files.Add(new FileUploadViewModel { file = imageFile, Name = "attachment3" });
}
private async Task HandleFileUpload3(InputFileChangeEventArgs e)
{
var imageFile = e.File;
files.Add(new FileUploadViewModel { file = imageFile, Name = "attachment4" });
}
private async Task ShowSweetAlert(string title, string icon)
{
// Display a SweetAlert dialog
await JSRuntime.InvokeVoidAsync("Swal.fire", new
{
toast = true,
showConfirmButton = false,
timer = 3000,
title = title,
icon = icon,
position = "top-end"
});
await JSRuntime.InvokeVoidAsync("closemodal");
}
private async Task Delete(int val)
{
var result = await JSRuntime.InvokeAsync("Swal.fire", new
{
html = "" +
"Are you sure you want to delete
" +
"\"Nicolas Alvarado\"
",
type = "warning",
showCancelButton = true,
customClass = new
{
confirmButton = "btn btn-success m-1",
cancelButton = "btn btn-danger m-1"
},
buttonsStyling = false,
confirmButtonText = "Yes",
cancelButtonText = "No"
});
if (result.TryGetProperty("isConfirmed", out var isConfirmedProperty) && isConfirmedProperty.GetBoolean())
{
// Call your delete API here
var response = await _service.DeleteTemplate(val);
if (response == "success")
{
await JSRuntime.InvokeVoidAsync("Swal.fire", new
{
icon = "success",
title = "Deleted!",
text = "Data has been deleted.",
type = "info",
showCancelButton = false,
customClass = new
{
confirmButton = "btn btn-success",
cancelButton = "btn btn-danger"
},
buttonsStyling = false,
confirmButtonText = "Ok"
});
templates = await _service.GetTemplates();
// await JSRuntime.InvokeVoidAsync("location.reload");
}
else
{
await JSRuntime.InvokeVoidAsync("Swal.fire", new
{
title = "Not Deleted!",
text = "Unsuccessful! Cannot delete this.",
type = "danger"
});
}
}
}
private void Changestep(int val)
{
step = val;
if (val == 1)
{
model = new WorkOrder();
}
}
}