Files
BarangaySystem/legacy/pages-blade-views/views/fragments/user/shared/adminadvanced/editStoreUltimate.blade.php
2026-06-06 18:43:00 +08:00

224 lines
8.1 KiB
PHP

<div id="EditStoreForm">
</div>
<script>storeUnavailabe = false;</script>
@php
use App\Http\Controllers\UserManagement\CreateUserControllerUltimate;
@endphp
<script>
InitDataPageFuncOBJ();
LoadDataPageFunc = {};
LoadDataPageFunc.URLs = {};
LoadDataPageFunc.URLs.EditUrl = `/Store/Edit`;
LoadDataPageFunc.URLs.CategoryDatalist = `/Store/New/Category/Datalist`;
// LoadDataPageFunc.URLs.SubCategoryDatalist = `/Products/New/SubCategory/Datalist`;
LoadDataPageFunc.URLs.PhotoUpload = `/File/Upload/Store`;
LoadDataPageFunc.PageTitle = 'Edit Store';
LoadDataPageFunc.ids = {};
LoadDataPageFunc.ids.photodropzone = 'NewStorePhotos';
LoadDataPageFunc.formclass = 'NewStoreMarket';
try {
StoreData = @json($current_data);
} catch (error) {
StoreData = {};
}
LoadDataPageFunc.LoadUI = function () {
let finalhtml = '';
const formclass = LoadDataPageFunc.formclass;
const textbox = function (placeholder, label, id, required = false, datalist = '', textvalue = '') {
return UIInputGroup(placeholder, 'text', id, label, formclass, spanclass = '', imginsteadofspan = '', required, textvalue, datalist, imgwidth = '', imgheight = '');
};
const name = textbox('Store Name', 'Name', 'name', true, '', StoreData.name);
const description = UIInputGroupTEXTAREA(label = 'Description', 'description', required = true, textareacontent = StoreData.description, formclass);
const category = textbox('Product Category', 'Category', 'category', true, 'NewStoreCategoryDataList', StoreData.category);
const address = UIInputGroupTEXTAREA(label = 'Address', 'address', required = true, textareacontent = StoreData.address, formclass);
const categorydatalist = ArraytoDatalist("NewStoreCategoryDataList", [], false) || '';
const photoscontainer = UIInputGroupFileUploadDropzone(LoadDataPageFunc.ids.photodropzone, label = 'Photo', LoadDataPageFunc.URLs.PhotoUpload);
//ADD Validator for Javascript Inputs to Prevent JS Code Injection on ALL
const storeOwner = UIInputGroupSelect('owner', label = 'Store Owner', [['', 'Select User']], spanclass = '', imginsteadofspan = '', '', '', '', formclass);
//TODO Add Support for storeManager and Cashier multiple accounts support
const submitbutton = UIInputGroupButton('Submit', formclass, buttonid = '', onclick = 'LoadDataPageFunc.TryToSubmit();', buttonstyle = '');
finalhtml = name + description + category + categorydatalist + address + photoscontainer + storeOwner + submitbutton;
finalhtml = CreateCardSimple(false, finalhtml);
document.getElementById('EditStoreForm').innerHTML = finalhtml;
// QueryandReplaceDatalist("NewProductCategoryDataList", LoadDataPageFunc.URLs.CategoryDatalist, 'POST', datatosend = null, fromvarcache = true);
// QueryandReplaceDatalist("NewProductSubCategoryDataList", LoadDataPageFunc.URLs.SubCategoryDatalist, 'POST', datatosend = null, fromvarcache = true);
InitializeLoadDataPageFuncDropZonePhotoUpload(LoadDataPageFunc.URLs.PhotoUpload, LoadDataPageFunc.ids.photodropzone, ShowClearPhotoFUNC = '', clearphotosbuttonid = 'clearuploadbutton', acceptedfiles = '', maxsizeMB = 100);
LoadDataPageFunc.InitializePhotoDropZone();
// LoadDataPageFunc.UpdateSubCategoryDatalistasTyped();
QueryandReplaceDatalist("NewStoreCategoryDataList", LoadDataPageFunc.URLs.CategoryDatalist, 'POST', null, fromvarcache = true);
currentDropzone[LoadDataPageFunc.ids.photodropzone].functions.ReplaceDropzoneFiles(StorePhotosDropzone);
};
LoadDataPageFunc.RepopulateStoreOwnerList = function () {
function UpdateSelectParentList(response) {
const selectElement = $("#owner");
response.forEach(element => {
$("<option></option>")
.val(element.hashkey)
.text(`${element.name} (${element.mobile_number}) [${element.username}] ${element.fullname ?? ''}`)
.appendTo(selectElement);
});
selectElement.val(StoreData.owner_hashkey || 0);
}
@if ($FragmentOnly)
AjaxDo('/admin/user/list/numbers/hash', {}, UpdateSelectParentList, null, reqtype = 'POST');
@else
let userdata = @json(CreateUserControllerUltimate::listAllUsersforParentSelectHTML(true));
UpdateSelectParentList(userdata);
@endif
};
LoadDataPageFunc.TryToSubmit = function () {
const currentformdata = LoadDataPageFunc.ValidateForm();
if (!currentformdata) {
ModalQuickDismiss('Error', 'Name, Description, Category and Address are required fields.', modalid = '', modaltohide = '', functiontodo = '', conditiontrue = true, modalfooter = '');
return false;
}
const errorModal = function (errorstring = '') {
ModalQuickDismiss('Error', 'Unable Update Store. <br>' + errorstring, modalid = '', modaltohide = '', functiontodo = '', conditiontrue = true, modalfooter = '');
};
const successModal = function () {
hideallmodals();
ModalQuickDismiss('Success', 'New Store Updated');
};
const submitsuccess = function (response) {
if (typeof response.success !== 'undefined' && response.success === true) {
Preloaders.ViewStoreinMarket(currenttarget, false, function (response) {
successModal();
gotoPage('ViewStoreMarket', currenttarget);
});
} else {
errorModal(response.message || 'An error occurred while updating the store.');
}
// responseOk = isResponseAHash(response);
// if (!responseOk) {
// errorModal(response);
// return false;
// }
// if (responseOk) {
// // Preloaders.ViewProductinMarket(response);
// successModal();
// gotoPage('ViewStoreMarket', response);
// return true;
// }
};
SendPostDataFormwithTARGETUPLOADEDFILES(LoadDataPageFunc.URLs.EditUrl, LoadDataPageFunc.formclass, submitsuccess);
};
LoadDataPageFunc.ValidateForm = function () {
return validateInputForm(['name', 'description', 'address', 'category']);
const isAnyoftheRequiredEmpty = !inputsArray['NewProductName'] || !inputsArray['NewProductDescription'] || !inputsArray['NewProductCategory'] || !inputsArray['NewProductSubCategory'] ||
!inputsArray['NewProductPrice'] || !inputsArray['NewProductAvailable'] || !inputsArray['NewProductUnitName'] || Target_Uploaded_Files.length === 0;
if (isAnyoftheRequiredEmpty || isBarcodeNumeric === false) {
return false;
}
const IsBarcodeValid = IsStringBarcode12Digits(inputsArray['NewProductBarcode']);
return true;
};
LoadDataPageFunc.AssignVariablesandLoadUI = function () {
try {
StorePhotosDropzone = StoreData.photourlDropzone;
} catch (error) {
StorePhotosDropzone = [];
}
try {
ParentList = StoreData.ParentList; // TODO ParentListisNotUsed
} catch (error) {
ParentList = false;
}
LoadDataPageFunc.LoadUI();
LoadDataPageFunc.RepopulateStoreOwnerList();
};
LoadDataPageFunc.FetchStoreData = function () {
if (typeof StoreData.name !== 'undefined') {
LoadDataPageFunc.AssignVariablesandLoadUI();
return;
}
let Req = new RequestData(false);
Req.url('/Edit/Store/Details/data').type('POST').fromVarCache(false).data({ target: currenttarget })
.success((response) => {
StoreData = response;
LoadDataPageFunc.AssignVariablesandLoadUI();
}).go();
};
LoadDataPageFunc.Main = function () {
LoadDataPageFunc.FetchStoreData();
changeTopbarTitle(LoadDataPageFunc.PageTitle);
};
LoadDataPageFunc.Main();
</script>