Add project files.

This commit is contained in:
2025-06-04 12:59:27 +07:00
parent 7e2c350205
commit 5babe89a83
254 changed files with 72374 additions and 0 deletions

View File

@ -0,0 +1,5 @@

<div class="text-center">
<h1 class="display-4">Welcome</h1>
<p>Learn about <a href="https://learn.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>

View File

@ -0,0 +1,6 @@
@{
ViewData["Title"] = "Privacy Policy";
}
<h1>@ViewData["Title"]</h1>
<p>Use this page to detail your site's privacy policy.</p>

View File

@ -0,0 +1,43 @@
<div class="c">
<div class="r j-c-center h-100vh pt-5 pb-5">
<div class="c-s-12 c-m-10 c-l-8 c-x-10 c-sx-8 w-login mt-auto mb-auto">
<div class="r-n-g j-c-center a-i-center">
<div class="d-n c-x-6 d-x-b">
<img src="~/images/img1.jpg" class="w-100" />
</div>
<div class="c-12 c-x-6">
<div class="h-100 d-f a-i-center">
<div class="ws-login d-f f-c a-i-center">
<span class="ws-title">Đăng Nhập</span>
<div class="ws-input mb-4">
<span class="label-input">Tài khoản</span>
<div class="c-input d-f a-i-center">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z" /></svg>
<input type="text" class="input" placeholder="Nhập tài khoản" />
</div>
</div>
<div class="ws-input">
<span class="label-input">Mật khẩu</span>
<div class="c-input d-f a-i-center">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zM264 392c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48zm32-168H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z" /></svg>
<input type="password" class="input" placeholder="Nhập mật khẩu" />
</div>
</div>
<div class="ws-forgot ml-auto">
<a href="#">Quên mật khẩu?</a>
</div>
<div class="ws-btn d-f j-c-center">
<div class="btn-mask"></div>
<button class="btn btn-effect">Đăng nhập</button>
</div>
<div class="ws-signup d-f f-c a-i-center">
<span>Đăng ký tài khoản bằng ID</span>
<a href="#">Đăng Ký</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,44 @@
@using AppLibs.Libs
@{
List<NavItem> t = WSNavigation.GetListMenu();
}
@foreach (var i in t)
{
@if (i.IsGroup)
{
<div class="nav-header">
@i.Name
</div>
}
else if (i.SubItem == null)
{
<a class="nav-i d-f" href="javascript:void(0)" app-url="@i.Url" app-nav nav-id="@i.ID">
<span class="atg atg-@i.Icon mr-2">
</span>
<span>@i.Name</span>
</a>
}
else
{
<div class="nav-i has-sub d-f f-c" data-dropdown>
<a class="nav-i d-f" href="javascript:void(0)">
<span class="atg atg-@i.Icon mr-2">
</span>
<span>@i.Name</span>
<div class="more"><span class="atg atg-more"></span></div>
</a>
<div class="sub-item d-f f-c">
@foreach (var j in i.SubItem)
{
<a class="nav-i d-f nonhide" href="javascript:void(0)" app-url="@j.Url" app-nav nav-id="@j.ID" nav-sub>
<span class="atg atg-circle mr-2"></span>
<span>@j.Name</span>
</a>
}
</div>
</div>
}
}

View File

@ -0,0 +1 @@
Rooms Add

View File

@ -0,0 +1 @@
Rooms List

View File

@ -0,0 +1,64 @@
@{
IgnoreSection("jsLib");
IgnoreSection("jsPage");
IgnoreBody();
}
<html lang="en">
<head>
<meta charset="utf-8" />
@* <meta http-equiv="Content-Security-Policy" content="default-src 'self' https://login.microsoftonline.com https://aadcdn.msftauth.net; " />
*@ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
<meta name="idPage" content="@ViewData["PageID"]" pageName="Resprt Management" isLayout="@ViewData["IsLayout"]" />
<title>@ViewData["Title"] - ERP ATG System </title>
@* <link rel="icon" type="image/x-icon" href="@Url.AbsoluteContent("~/images/logo/logo-ico.png")" />
*@
<link rel="preload" as="script" href="@Url.AbsoluteContent("~/js/libs/js-core.js")">
<link rel="preload" as="style" href="@Url.AbsoluteContent("~/css/atg-lib/atg-core.css")" />
</head>
<body class="hp">
<header id="header">
</header>
<section id="section1">
</section>
<section data-scrollbar class="main-scrollbar">
<div class="loading"></div>
<div class="main-wrapper" app-content>
<div class="main-container">
<main main-content>
</main>
</div>
</div>
<footer id="footer">
</footer>
</section>
<script src="@Url.AbsoluteContent("~/js/libs/js-core.js")"></script>
<section app-js-lib>
<script src="@Url.AbsoluteContent("~/js/ext_libs/js-scrollbar.js")" js-lib async></script>
</section>
<section app-js-page>
</section>
<script>
window.requestTimeout(() => {
window.app = new AApp('[app-content] > .main-container');
(function () {
window.app.renderNoLayout();
})();
(function () {
window.app.renderLayout();
})();
(function () {
var asyncStyleSheets = [
'@Url.AbsoluteContent("~/css/atg-lib/atg-core.css")',
'@Url.AbsoluteContent("~/css/site.css")'
];
window.app.loadCSS(asyncStyleSheets);
})();
}, 5, window.registerCancel);
</script>
</body>
</html>

View File

@ -0,0 +1,93 @@
<div id="header">
<div class="c-logo">
<div class="logo d-f f-c a-i-center" >
<img src="~/images/logo3.svg" />
<span class="mt-1 logo-name">Resort Management</span>
</div>
<div class="d-b d-x-n hd-close">
<svg xmlns="http://www.w3.org/2000/svg" width="20px" height="20px" viewBox="0 0 24 24" stroke="#7367f0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="d-block d-xl-none feather feather-x"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
</div>
</div>
<div class="menu-content">
<div class="nav-overlay"></div>
<div class="mini-scrollbar">
<div class="nav-main d-f f-c">
@await Html.PartialAsync("~/Views/Partial/MenuAP.cshtml")
</div>
</div>
</div>
<div class="m-footer d-f f-c">
<span>
<b>Copyright<sup>©</sup></b> 2024 ATG Technology
</span>
<span class="mt-1"><b>Version: </b> 0.0.1a</span>
</div>
</div>
<div id="section1">
<nav>
<div class="c-nav">
<div class="d-f j-c-between">
<div class="d-f wiget a-i-center">
<a href="javascript:void(0)" class="d-b d-x-n" id="aMenu">
<span class="atg atg-menu"></span>
</a>
<div class="d-b d-m-f f-m-r" data-dropdown>
<a href="javascript:void(0)" class="d-b d-m-n item dropdown" id="aSubMenu">
<span class="atg atg-dot"></span>
</a>
<div class="sub-item d-f f-c f-m-r">
<a href="javascript:void(0)">
<span class="atg atg-calendar"></span>
</a>
<a href="javascript:void(0)">
<span class="atg atg-message"></span>
</a>
<a href="javascript:void(0)">
<span class="atg atg-email"></span>
</a>
<a href="javascript:void(0)">
<span class="atg atg-check-sqare"></span>
</a>
<a href="javascript:void(0)">
<span class="atg atg-star"></span>
</a>
</div>
</div>
</div>
<div class="d-f j-c-end wiget a-i-center">
<a href="javascript:void(0)" class="d-n d-s-f">
<span class="atg atg-search"></span>
</a>
<a href="javascript:void(0)" class="d-n d-s-f">
<span class="atg atg-notification"></span>
<span class="badge">10</span>
</a>
<a href="javascript:void(0)" class="ml-2">
<div class="d-f">
<div class="d-n d-s-f f-c a-i-end c-user">
<span>Duong Nguyen</span>
<span>Admin</span>
</div>
<div class="con-a">
<div class="avatar"></div>
<div class="status"></div>
</div>
</div>
</a>
</div>
</div>
</div>
</nav>
<div class="nav-shadow"></div>
</div>
<div id="footer">
</div>
@section jsLib {
<script src="@Url.AbsoluteContent("~/js/libs/js-waves.js")" js-lib async></script>
<script src="@Url.AbsoluteContent("~/js/ext_libs/js-overscroll.js")" js-lib async></script>
<script type="module" src="@Url.AbsoluteContent("~/js/js-page/asyncLayout.js")" js-lib></script>
}

View File

@ -0,0 +1,5 @@
@RenderSection("jsLib", required: false)
@RenderSection("jsPage", required: false)
@{
IgnoreBody();
}

View File

@ -0,0 +1,143 @@
<div class="c-breadcrumbs d-f">
<h2 class="title">Config Storage</h2>
<div class="d-f breadcrumbs">
<a href="javascript:void(0)" class="item">
<span class="icon atg atg-home"></span>
</a>
<span class="sperate">></span>
<a href="javascript:void(0)" class="item">
Storage Management
</a>
<span class="sperate">></span>
<a href="javascript:void(0)" class="item">
Storage Setting
</a>
<span class="sperate">></span>
<span class="item active">Config Storage</span>
</div>
</div>
<div class="cfull">
<div class="r-n-g">
<div class="c-12">
<div class="card-body">
<div class="d-f">
<h4>Storage Initialization</h4>
<div class="more"><span class="atg atg-more"></span></div>
</div>
<div class="d-f f-c form-group-con mb-2 ">
<div class="form-group d-f f-c">
<label>Total Size</label>
<div class="input-custom d-f c-12 c-s-6">
<button class="input-append left d-f a-i-center minus btn-effect waves-float">
<span class="atg atg-minus"></span>
</button>
<div class="d-f w-100">
<input id="totalSize" type="text" default-value="1" max-value="10000" min-value="1" step-value="1" placeholder="Dung Lượng Storage" validation-isEmpty />
<span class="input-append right">Gb</span>
</div>
<button class="input-append right d-f a-i-center plus btn-effect waves-float">
<span class="atg atg-1x atg-plus"></span>
</button>
</div>
<label>List Storage Server</label>
<div class="input-custom amultitag d-f c-12 c-s-6" id="listStorage">
<div class="d-f w-100 input-content"></div>
<div class="input-append right d-f a-i-center plus btn-effect waves-float btn-Add">
<span class="atg atg-plus"></span>
</div>
</div>
<div class="d-f f-c mt-1">
<div class="invalid-feedback mess-empty"></div>
</div>
<div class="brn-group">
<button id="btAdd" type="button" class="btn btn-effect btn-primary mt-2 waves-effect waves-float d-f a-i-center">
Add
</button>
<button id="btLogin" type="button" class="btn btn-effect btn-primary mt-2 waves-effect waves-float d-f a-i-center">
Login Microsoft 365
</button>
</div>
</div>
</div>
</div>
</div>
<div class="c-12">
<div class="card-body">
<div class="d-f">
<h4>Storage Setting</h4>
<div class="more"><span class="atg atg-more"></span></div>
</div>
<h5 class="mt-2 mb-2">Search Fillter</h5>
<div class="d-f f-c form-group-con mb-2 ">
<div class="form-group d-f f-c">
<div class="input-group">
<input id="inpKey" type="text" placeholder="Keyword" validation-isEmpty />
</div>
<div class="d-f f-c mt-1">
<div class="invalid-feedback mess-empty"></div>
</div>
<div class="brn-group">
<button id="btSearch" type="button" class="btn btn-effect btn-primary mt-2 waves-effect waves-float d-f a-i-center">
Search
</button>
</div>
</div>
</div>
<div class="atabs">
<div class="tab-item">
<a href="javascript:void(0)" class="item active">Searched Result</a>
</div>
<div class="tab-item">
<a href="javascript:void(0)" class="item" disabled>Update Item</a>
</div>
</div>
<div class="d-f f-c form-group-con">
<div class="form-group tabcontents">
<div class="tabcontent">
<div class="c-table">
</div>
</div>
<div class="tabcontent">
<div class="d-f f-c form-group-con mb-2 ">
<div class="form-group d-f f-c">
<h5 class="mt-2 mb-2">Edit Storage Type</h5>
<label for="inpType">Storage Type Name</label>
<div class="input-group">
<input id="inpEID" type="hidden" />
<input id="inpEType" type="text" placeholder="Type Name" validation-isEmpty />
</div>
<div class="d-f f-c mt-1">
<div class="invalid-feedback mess-empty"></div>
</div>
<div class="brn-group d-f mt-2">
<button id="btUpdate" type="button" class="btn btn-effect btn-primary waves-effect waves-float d-f a-i-center">
Update
</button>
<button id="btBack" type="button" class="btn btn-effect btn-primary ml-2 waves-effect waves-float d-f a-i-center">
Cancel
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="c-12">
<div class="card-body">
<div class="d-f">
<h4>Your Storage</h4>
<div class="more"><span class="atg atg-more"></span></div>
</div>
</div>
</div>
</div>
</div>
@section jsLib {
<script type="module" src="@Url.AbsoluteContent("~/js/js-page/6101.js")" js-lib></script>
}

View File

@ -0,0 +1,113 @@
<div class="c-breadcrumbs d-f f-wrap">
<h2 class="title">Type Storage</h2>
<div class="d-f f-wrap breadcrumbs">
<a href="javascript:void(0)" class="item">
<span class="icon atg atg-home"></span>
</a>
<span class="sperate">></span>
<a href="javascript:void(0)" class="item">
Storage Management
</a>
<span class="sperate">></span>
<a href="javascript:void(0)" class="item">
Storage Setting
</a>
<span class="sperate">></span>
<span class="item active">Type Storage</span>
</div>
</div>
<div class="cfull">
<div class="r-n-g">
<div class="c-12">
<div class="card-body">
<div class="d-f">
<h4>Add Type Storage</h4>
<div class="more"><span class="atg atg-more"></span></div>
</div>
<div class="d-f f-c form-group-con mb-2 ">
<div class="form-group d-f f-c">
<label for="inpType">Storage Type Name</label>
<div class="input-group">
<input id="inpType" type="text" placeholder="Type Name" validation-isEmpty />
</div>
<div class="d-f f-c mt-1">
<div class="invalid-feedback mess-empty"></div>
</div>
<div class="brn-group">
<button id="btAdd" type="button" class="btn btn-effect btn-primary mt-2 waves-effect waves-float d-f a-i-center">
Add
</button>
</div>
</div>
</div>
</div>
</div>
<div class="c-12">
<div class="card-body">
<div class="d-f">
<h4>Type Storage List</h4>
<div class="more"><span class="atg atg-more"></span></div>
</div>
<h5 class="mt-2 mb-2">Search Fillter</h5>
<div class="d-f f-c form-group-con mb-2 ">
<div class="form-group d-f f-c">
<div class="input-group">
<input id="inpKey" type="text" placeholder="Keyword" validation-isEmpty />
</div>
<div class="d-f f-c mt-1">
<div class="invalid-feedback mess-empty"></div>
</div>
<div class="brn-group">
<button id="btSearch" type="button" class="btn btn-effect btn-primary mt-2 waves-effect waves-float d-f a-i-center">
Search
</button>
</div>
</div>
</div>
<div class="atabs">
<div class="tab-item">
<a href="javascript:void(0)" class="item active">Searched Result</a>
</div>
<div class="tab-item">
<a href="javascript:void(0)" class="item" disabled>Update Item</a>
</div>
</div>
<div class="d-f f-c form-group-con">
<div class="form-group tabcontents">
<div class="tabcontent">
<div class="c-table">
</div>
</div>
<div class="tabcontent">
<div class="d-f f-c form-group-con mb-2 ">
<div class="form-group d-f f-c">
<h5 class="mt-2 mb-2">Edit Storage Type</h5>
<label for="inpType">Storage Type Name</label>
<div class="input-group">
<input id="inpEID" type="hidden" />
<input id="inpEType" type="text" placeholder="Type Name" validation-isEmpty />
</div>
<div class="d-f f-c mt-1">
<div class="invalid-feedback mess-empty"></div>
</div>
<div class="brn-group d-f mt-2">
<button id="btUpdate" type="button" class="btn btn-effect btn-primary waves-effect waves-float d-f a-i-center">
Update
</button>
<button id="btBack" type="button" class="btn btn-effect btn-primary ml-2 waves-effect waves-float d-f a-i-center">
Cancel
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@section jsLib {
<script type="module" src="@Url.AbsoluteContent("~/js/js-page/6102.js")" js-lib></script>
}

View File

@ -0,0 +1,142 @@
<div class="c-breadcrumbs d-f f-wrap">
<h2 class="title">Type Storage</h2>
<div class="d-f f-wrap breadcrumbs">
<a href="javascript:void(0)" class="item">
<span class="icon atg atg-home"></span>
</a>
<span class="sperate">></span>
<a href="javascript:void(0)" class="item">
Storage Management
</a>
<span class="sperate">></span>
<a href="javascript:void(0)" class="item">
Storage Setting
</a>
<span class="sperate">></span>
<span class="item active">Validation Domain</span>
</div>
</div>
<div class="cfull">
<div class="r-n-g">
<div class="c-12">
<div class="card-body">
<div class="d-f">
<h4>Add Validation Domain</h4>
<div class="more"><span class="atg atg-more"></span></div>
</div>
<div class="d-f f-c form-group-con mb-2 ">
<div class="form-group d-f f-c">
<label for="inpName">Domain Name</label>
<div class="input-group">
<input id="inpName" type="text" placeholder="Type Name" validation-isEmpty />
</div>
<div class="d-f f-c mt-1">
<div class="invalid-feedback mess-empty"></div>
</div>
<label for="inpPro">Protocol</label>
<div class="input-group">
<select id="inpPro" class="aselect dropdown" data-width="auto" data-max-height="250">
<option value="https">https</option>
<option value="http">http</option>
</select>
</div>
<label for="inpName">Port Number</label>
<div class="input-group">
<input id="inpPN" type="text" placeholder="Port Number" validation-isEmpty />
</div>
<div class="d-f f-c mt-1">
<div class="invalid-feedback mess-empty"></div>
</div>
<div class="brn-group">
<button id="btAdd" type="button" class="btn btn-effect btn-primary mt-2 waves-effect waves-float d-f a-i-center">
Add
</button>
</div>
</div>
</div>
</div>
</div>
<div class="c-12">
<div class="card-body">
<div class="d-f">
<h4>Validation Domain List</h4>
<div class="more"><span class="atg atg-more"></span></div>
</div>
<h5 class="mt-2 mb-2">Search Fillter</h5>
<div class="d-f f-c form-group-con mb-2 ">
<div class="form-group d-f f-c">
<div class="input-group">
<input id="inpKey" type="text" placeholder="Keyword" validation-isEmpty />
</div>
<div class="d-f f-c mt-1">
<div class="invalid-feedback mess-empty"></div>
</div>
<div class="brn-group">
<button id="btSearch" type="button" class="btn btn-effect btn-primary mt-2 waves-effect waves-float d-f a-i-center">
Search
</button>
</div>
</div>
</div>
<div class="atabs">
<div class="tab-item">
<a href="javascript:void(0)" class="item active">Searched Result</a>
</div>
<div class="tab-item">
<a href="javascript:void(0)" class="item" disabled>Update Item</a>
</div>
</div>
<div class="d-f f-c form-group-con">
<div class="form-group tabcontents">
<div class="tabcontent">
<div class="c-table">
</div>
</div>
<div class="tabcontent">
<div class="d-f f-c form-group-con mb-2 ">
<div class="form-group d-f f-c">
<h5 class="mt-2 mb-2">Edit Validation Domain</h5>
<label for="inpEDName">Domain Name</label>
<div class="input-group">
<input id="inpID" type="hidden" />
<input id="inpEDName" type="text" placeholder="Domain Name" validation-isEmpty />
</div>
<div class="d-f f-c mt-1">
<div class="invalid-feedback mess-empty"></div>
</div>
<label for="inpEPro">Port Number</label>
<div class="input-group">
<select id="inpEPro" class="aselect dropdown" data-width="auto" data-max-height="250">
<option value="https">https</option>
<option value="http">http</option>
</select>
</div>
<label for="inpEPN">Port Number</label>
<div class="input-group">
<input id="inpEPN" type="text" placeholder="Port Number" validation-isEmpty />
</div>
<div class="d-f f-c mt-1">
<div class="invalid-feedback mess-empty"></div>
</div>
<div class="brn-group d-f mt-2">
<button id="btUpdate" type="button" class="btn btn-effect btn-primary waves-effect waves-float d-f a-i-center">
Update
</button>
<button id="btBack" type="button" class="btn btn-effect btn-primary ml-2 waves-effect waves-float d-f a-i-center">
Cancel
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@section jsLib {
<script type="module" src="@Url.AbsoluteContent("~/js/js-page/6103.js")" js-lib></script>
}

View File

@ -0,0 +1,4 @@
@using ManagementApp
@using ManagementApp.Models
@using AppLibs.Libs;
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

View File

@ -0,0 +1,11 @@
@{
switch (ViewData["Layout"])
{
case null:
Layout = "_Layout";
break;
case "SectionScript":
Layout = "_PartialScript";
break;
}
}