From fed702fce81085d8ae3e6d674912306766b1475f Mon Sep 17 00:00:00 2001 From: trungduong Date: Sat, 27 Sep 2025 19:03:32 +0700 Subject: [PATCH] update services page --- AppLibs/AppLibs/Libs/ControllerExtensions.cs | 4 +- TWA-App/Controllers/CompanyController.cs | 2 +- TWA-App/Controllers/ServicesController.cs | 32 ++ TWA-App/Data/page/2002.html | 64 --- TWA-App/Data/page/2003.html | 64 --- TWA-App/Data/page/2004.html | 64 --- TWA-App/Data/page/2005.html | 64 --- .../Data/{page => pages/company}/2001.html | 0 TWA-App/Data/pages/company/2002.html | 69 ++++ TWA-App/Data/pages/company/2003.html | 69 ++++ TWA-App/Data/pages/company/2004.html | 69 ++++ TWA-App/Data/pages/company/2005.html | 68 ++++ TWA-App/Data/pages/company/2006.html | 69 ++++ TWA-App/Data/pages/services/3001.html | 1 + TWA-App/Data/pages/services/3002.html | 1 + TWA-App/Data/pages/services/3003.html | 1 + TWA-App/Data/pages/services/3004.html | 1 + TWA-App/Json/navlist.json | 382 +++++++++--------- TWA-App/Models/ServicesModel.cs | 37 ++ TWA-App/Program.cs | 8 +- TWA-App/TWA-App.csproj | 32 +- TWA-App/Views/Home/Index.cshtml | 179 +++++++- TWA-App/Views/Partial/MenuAP.cshtml | 10 +- TWA-App/Views/Services/Index.cshtml | 124 ++++++ TWA-App/Views/Shared/_Layout.cshtml | 1 + TWA-App/wwwroot/css/atg-lib/atg-core.css | 12 +- TWA-App/wwwroot/css/site.css | 199 ++++++--- .../images/1000/award-section/bg-award.png | Bin 0 -> 130862 bytes .../images/1000/award-section/bg-image.png | Bin 0 -> 2828133 bytes .../images/1000/award-section/ci-award.jpg | Bin 0 -> 114252 bytes .../images/1000/award-section/ci-award.png | Bin 0 -> 800096 bytes TWA-App/wwwroot/images/3000/plh-3001.jpg | Bin 0 -> 301498 bytes TWA-App/wwwroot/js/ext_libs/js-scrollbar.js | 22 + TWA-App/wwwroot/js/js-page/1000.js | 24 +- TWA-App/wwwroot/js/js-page/2000.js | 28 +- TWA-App/wwwroot/js/js-page/2001.js | 28 +- TWA-App/wwwroot/js/js-page/3000.js | 67 +++ TWA-App/wwwroot/js/js-page/3001.js | 7 + TWA-App/wwwroot/js/js-page/asyncLayout.js | 9 +- TWA-App/wwwroot/js/libs/js-ADropdown.js | 7 +- TWA-App/wwwroot/js/libs/js-AMenu.js | 30 +- TWA-App/wwwroot/js/libs/js-ASidebar.js | 5 + TWA-App/wwwroot/js/libs/js-core.js | 10 +- 43 files changed, 1278 insertions(+), 585 deletions(-) create mode 100644 TWA-App/Controllers/ServicesController.cs delete mode 100644 TWA-App/Data/page/2002.html delete mode 100644 TWA-App/Data/page/2003.html delete mode 100644 TWA-App/Data/page/2004.html delete mode 100644 TWA-App/Data/page/2005.html rename TWA-App/Data/{page => pages/company}/2001.html (100%) create mode 100644 TWA-App/Data/pages/company/2002.html create mode 100644 TWA-App/Data/pages/company/2003.html create mode 100644 TWA-App/Data/pages/company/2004.html create mode 100644 TWA-App/Data/pages/company/2005.html create mode 100644 TWA-App/Data/pages/company/2006.html create mode 100644 TWA-App/Data/pages/services/3001.html create mode 100644 TWA-App/Data/pages/services/3002.html create mode 100644 TWA-App/Data/pages/services/3003.html create mode 100644 TWA-App/Data/pages/services/3004.html create mode 100644 TWA-App/Models/ServicesModel.cs create mode 100644 TWA-App/Views/Services/Index.cshtml create mode 100644 TWA-App/wwwroot/images/1000/award-section/bg-award.png create mode 100644 TWA-App/wwwroot/images/1000/award-section/bg-image.png create mode 100644 TWA-App/wwwroot/images/1000/award-section/ci-award.jpg create mode 100644 TWA-App/wwwroot/images/1000/award-section/ci-award.png create mode 100644 TWA-App/wwwroot/images/3000/plh-3001.jpg create mode 100644 TWA-App/wwwroot/js/js-page/3000.js create mode 100644 TWA-App/wwwroot/js/js-page/3001.js create mode 100644 TWA-App/wwwroot/js/libs/js-ASidebar.js diff --git a/AppLibs/AppLibs/Libs/ControllerExtensions.cs b/AppLibs/AppLibs/Libs/ControllerExtensions.cs index ab8efbe..bc3f1b0 100644 --- a/AppLibs/AppLibs/Libs/ControllerExtensions.cs +++ b/AppLibs/AppLibs/Libs/ControllerExtensions.cs @@ -155,10 +155,10 @@ namespace AppLibs.Libs } } - public static async Task ReadStaticPage(this Controller controller, string id) + public static async Task ReadStaticPage(this Controller controller, string file) { var filePath = Path.Combine(Directory.GetCurrentDirectory(), - "Data", "page", $"{id}.html"); + "Data", "pages", $"{file}"); if (!System.IO.File.Exists(filePath)) throw new FileNotFoundException(); diff --git a/TWA-App/Controllers/CompanyController.cs b/TWA-App/Controllers/CompanyController.cs index 8f26a5f..60478ca 100644 --- a/TWA-App/Controllers/CompanyController.cs +++ b/TWA-App/Controllers/CompanyController.cs @@ -19,7 +19,7 @@ namespace TWA_App.Controllers ViewData["PageID"] = result.ID; ViewData["Title"] = result.Name; - ViewBag.Content = await this.ReadStaticPage(result.ID); + ViewBag.Content = await this.ReadStaticPage(Path.Join("company", result.ID + ".html")); return await this.ViewAsync(); } } diff --git a/TWA-App/Controllers/ServicesController.cs b/TWA-App/Controllers/ServicesController.cs new file mode 100644 index 0000000..c8e256a --- /dev/null +++ b/TWA-App/Controllers/ServicesController.cs @@ -0,0 +1,32 @@ +using AppLibs.Libs; +using Microsoft.AspNetCore.Mvc; + +namespace TWA_App.Controllers +{ + public class ServicesController : Controller + { + [PageInfor("3000", "Services", "/Services/*")] + [Layout(LayoutOptions.Default)] + public async Task Index(string? id) + { + if (id != null) + { + NavItem list = (await WSNavigation.GetListMenu())[2]; + if (list.SubItem != null && list.SubItem.Count > 0) + { + NavItem? result = list.SubItem.FirstOrDefault(l => l.Url.Split('/').Last().Equals(id)); + if (result != null) + { + ViewData["PageID"] = result.ID; + ViewData["Title"] = result.Name; + + ViewBag.Content = await this.ReadStaticPage(Path.Join("services", result.ID + ".html")); + return await this.ViewAsync(); + } + } + } + return NotFound(); + } + + } +} diff --git a/TWA-App/Data/page/2002.html b/TWA-App/Data/page/2002.html deleted file mode 100644 index da13600..0000000 --- a/TWA-App/Data/page/2002.html +++ /dev/null @@ -1,64 +0,0 @@ -
- - - -
-
-
-
-
-
-

We’re creating content for this section

-

- Content for the provincial pages is being prepared and will be updated soon. Please leave your email to receive updates and be notified when it goes live. -

- - - - - - - -
- -
-
-
-
-
An email is required.
-
Email is not valid.
- - - - -
-
-
Form submission successful!
- To activate this form, sign up at -
- https://startbootstrap.com/solution/contact-forms -
-
- - - - -
Error sending message!
-
-
-
-
-
-
- -
- - - -
\ No newline at end of file diff --git a/TWA-App/Data/page/2003.html b/TWA-App/Data/page/2003.html deleted file mode 100644 index 4c86670..0000000 --- a/TWA-App/Data/page/2003.html +++ /dev/null @@ -1,64 +0,0 @@ -
- - - -
-
-
-
-
-
-

We’re creating content for this section

-

- Content for the provincial pages is being prepared and will be updated soon. Please leave your email to receive updates and be notified when it goes live. -

- - - - - - - -
- -
-
-
-
-
An email is required.
-
Email is not valid.
- - - - -
-
-
Form submission successful!
- To activate this form, sign up at -
- https://startbootstrap.com/solution/contact-forms -
-
- - - - -
Error sending message!
-
-
-
-
-
-
- -
- - - -
\ No newline at end of file diff --git a/TWA-App/Data/page/2004.html b/TWA-App/Data/page/2004.html deleted file mode 100644 index 4c86670..0000000 --- a/TWA-App/Data/page/2004.html +++ /dev/null @@ -1,64 +0,0 @@ -
- - - -
-
-
-
-
-
-

We’re creating content for this section

-

- Content for the provincial pages is being prepared and will be updated soon. Please leave your email to receive updates and be notified when it goes live. -

- - - - - - - -
- -
-
-
-
-
An email is required.
-
Email is not valid.
- - - - -
-
-
Form submission successful!
- To activate this form, sign up at -
- https://startbootstrap.com/solution/contact-forms -
-
- - - - -
Error sending message!
-
-
-
-
-
-
- -
- - - -
\ No newline at end of file diff --git a/TWA-App/Data/page/2005.html b/TWA-App/Data/page/2005.html deleted file mode 100644 index 4c86670..0000000 --- a/TWA-App/Data/page/2005.html +++ /dev/null @@ -1,64 +0,0 @@ -
- - - -
-
-
-
-
-
-

We’re creating content for this section

-

- Content for the provincial pages is being prepared and will be updated soon. Please leave your email to receive updates and be notified when it goes live. -

- - - - - - - -
- -
-
-
-
-
An email is required.
-
Email is not valid.
- - - - -
-
-
Form submission successful!
- To activate this form, sign up at -
- https://startbootstrap.com/solution/contact-forms -
-
- - - - -
Error sending message!
-
-
-
-
-
-
- -
- - - -
\ No newline at end of file diff --git a/TWA-App/Data/page/2001.html b/TWA-App/Data/pages/company/2001.html similarity index 100% rename from TWA-App/Data/page/2001.html rename to TWA-App/Data/pages/company/2001.html diff --git a/TWA-App/Data/pages/company/2002.html b/TWA-App/Data/pages/company/2002.html new file mode 100644 index 0000000..77520c7 --- /dev/null +++ b/TWA-App/Data/pages/company/2002.html @@ -0,0 +1,69 @@ +
+ + +
+
+
+ +
+
+
+
+

We’re creating content for this section

+

+ Content for the provincial pages is being prepared and will be updated soon. Please leave your email to receive updates and be notified when it goes live. +

+ + + + + + + +
+ +
+
+
+
+
An email is required.
+
Email is not valid.
+ + + + +
+
+
Form submission successful!
+ To activate this form, sign up at +
+ https://startbootstrap.com/solution/contact-forms +
+
+ + + + +
Error sending message!
+
+
+
+
+
+
+
+ +
+
+
+ + + + +
\ No newline at end of file diff --git a/TWA-App/Data/pages/company/2003.html b/TWA-App/Data/pages/company/2003.html new file mode 100644 index 0000000..87fe63b --- /dev/null +++ b/TWA-App/Data/pages/company/2003.html @@ -0,0 +1,69 @@ +
+ + +
+
+
+ +
+
+
+
+

We’re creating content for this section

+

+ Content for the provincial pages is being prepared and will be updated soon. Please leave your email to receive updates and be notified when it goes live. +

+ + + + + + + +
+ +
+
+
+
+
An email is required.
+
Email is not valid.
+ + + + +
+
+
Form submission successful!
+ To activate this form, sign up at +
+ https://startbootstrap.com/solution/contact-forms +
+
+ + + + +
Error sending message!
+
+
+
+
+
+
+
+ +
+
+
+ + + + +
\ No newline at end of file diff --git a/TWA-App/Data/pages/company/2004.html b/TWA-App/Data/pages/company/2004.html new file mode 100644 index 0000000..87fe63b --- /dev/null +++ b/TWA-App/Data/pages/company/2004.html @@ -0,0 +1,69 @@ +
+ + +
+
+
+ +
+
+
+
+

We’re creating content for this section

+

+ Content for the provincial pages is being prepared and will be updated soon. Please leave your email to receive updates and be notified when it goes live. +

+ + + + + + + +
+ +
+
+
+
+
An email is required.
+
Email is not valid.
+ + + + +
+
+
Form submission successful!
+ To activate this form, sign up at +
+ https://startbootstrap.com/solution/contact-forms +
+
+ + + + +
Error sending message!
+
+
+
+
+
+
+
+ +
+
+
+ + + + +
\ No newline at end of file diff --git a/TWA-App/Data/pages/company/2005.html b/TWA-App/Data/pages/company/2005.html new file mode 100644 index 0000000..4075582 --- /dev/null +++ b/TWA-App/Data/pages/company/2005.html @@ -0,0 +1,68 @@ +
+ + +
+
+
+ +
+
+
+
+

We’re creating content for this section

+

+ Content for the provincial pages is being prepared and will be updated soon. Please leave your email to receive updates and be notified when it goes live. +

+ + + + + + + +
+ +
+
+
+
+
An email is required.
+
Email is not valid.
+ + + + +
+
+
Form submission successful!
+ To activate this form, sign up at +
+ https://startbootstrap.com/solution/contact-forms +
+
+ + + + +
Error sending message!
+
+
+
+
+
+
+
+ +
+
+
+ + + +
\ No newline at end of file diff --git a/TWA-App/Data/pages/company/2006.html b/TWA-App/Data/pages/company/2006.html new file mode 100644 index 0000000..87fe63b --- /dev/null +++ b/TWA-App/Data/pages/company/2006.html @@ -0,0 +1,69 @@ +
+ + +
+
+
+ +
+
+
+
+

We’re creating content for this section

+

+ Content for the provincial pages is being prepared and will be updated soon. Please leave your email to receive updates and be notified when it goes live. +

+ + + + + + + +
+ +
+
+
+
+
An email is required.
+
Email is not valid.
+ + + + +
+
+
Form submission successful!
+ To activate this form, sign up at +
+ https://startbootstrap.com/solution/contact-forms +
+
+ + + + +
Error sending message!
+
+
+
+
+
+
+
+ +
+
+
+ + + + +
\ No newline at end of file diff --git a/TWA-App/Data/pages/services/3001.html b/TWA-App/Data/pages/services/3001.html new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/TWA-App/Data/pages/services/3001.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/TWA-App/Data/pages/services/3002.html b/TWA-App/Data/pages/services/3002.html new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/TWA-App/Data/pages/services/3002.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/TWA-App/Data/pages/services/3003.html b/TWA-App/Data/pages/services/3003.html new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/TWA-App/Data/pages/services/3003.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/TWA-App/Data/pages/services/3004.html b/TWA-App/Data/pages/services/3004.html new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/TWA-App/Data/pages/services/3004.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/TWA-App/Json/navlist.json b/TWA-App/Json/navlist.json index dbbd00d..3f35e9b 100644 --- a/TWA-App/Json/navlist.json +++ b/TWA-App/Json/navlist.json @@ -1,196 +1,194 @@ [ - { - "id": "1000", - "name": "Home", - "icon": "home", - "group": 0, - "url": "/", - "sub-item": "" - }, - { - "id": "2000", - "name": "Company", - "icon": "", - "group": 0, - "url": "", - "sub-item": [ - { - "id": "2001", - "name": "About Us", - "url": "/Company/AboutUs", - "flexpage": true - }, - { - "id": "2002", - "name": "Our Team", - "url": "/Company/OurTeam" - }, - { - "id": "2003", - "name": "Mission & Vision", - "url": "/Company/Mission-Vision", - "flexpage": true - }, - { - "id": "2004", - "name": "Milestone", - "url": "/Company/Milestone", - "flexpage": true - }, - { - "id": "2005", - "name": "Careers", - "url": "/Company/Careers", - "flexpage": true - }, - { - "id": "2006", - "name": "Partners", - "url": "/Company/Partners", - "flexpage": true - } - ] - }, - { - "id": "3000", - "name": "Services", - "icon": "", - "group": 0, - "url": "", - "sub-item": [ - { - "name": "Air Cargo", - "group": 1 - }, - { - "id": "3001", - "name": "Air Freigth", - "url": "/GlyphFonts/Icons" - }, - { - "id": "3002", - "name": "Air Forwarder", - "url": "/GlyphFonts/Glyps" - }, - { - "id": "3003", - "name": "Cargo Tracking", - "url": "/GlyphFonts/Glyps" - }, - { - "id": "3004", - "name": "Groupage", - "url": "/GlyphFonts/Glyps" - }, - { - "id": "3004", - "name": "Special Cargo Handling", - "url": "/GlyphFonts/Glyps" - }, - { - "name": "Air Passenger", - "group": 1 - }, - { - "id": "3005", - "name": "Ticketing & Reservation", - "url": "/GlyphFonts/Glyps" - }, - { - "id": "3006", - "name": "Check-in Services", - "url": "/GlyphFonts/Glyps" - }, - { - "id": "3007", - "name": "Baggage Handling", - "url": "/GlyphFonts/Glyps" - }, - { - "id": "3008", - "name": "Customer Service & Support", - "url": "/GlyphFonts/Glyps" - }, - { - "name": "Warehouse", - "group": 1 - }, - { - "id": "3009", - "name": "Contract Logistics", - "url": "/GlyphFonts/Glyps" - }, - { - "id": "3010", - "name": "Value Added Services", - "url": "/GlyphFonts/Glyps" - }, - { - "id": "3011", - "name": "Warehouse Logistics", - "url": "/GlyphFonts/Glyps" - }, - { - "id": "3010", - "name": "Consultancy", - "url": "/GlyphFonts/Glyps" - } + { + "id": "1000", + "name": "Home", + "icon": "home", + "group": 0, + "url": "/", + "sub-item": "" + }, + { + "id": "2000", + "name": "Company", + "icon": "", + "group": 0, + "url": "", + "sub-item": [ + { + "id": "2001", + "name": "About Us", + "url": "/Company/AboutUs", + "flexpage": true + }, + { + "id": "2002", + "name": "Our Team", + "url": "/Company/OurTeam" + }, + { + "id": "2003", + "name": "Mission & Vision", + "url": "/Company/Mission-Vision", + "flexpage": true + }, + { + "id": "2004", + "name": "Milestone", + "url": "/Company/Milestone", + "flexpage": true + }, + { + "id": "2005", + "name": "Careers", + "url": "/Company/Careers", + "flexpage": true + }, + { + "id": "2006", + "name": "Partners", + "url": "/Company/Partners", + "flexpage": true + } + ] + }, + { + "id": "3000", + "name": "Services", + "icon": "", + "group": 0, + "url": "", + "sub-item": [ + { + "name": "Air Cargo", + "group": 1 + }, + { + "id": "3001", + "name": "Cargo GSSA", + "url": "/Services/Cargo-GSSA", + "flexpage": true - ] - }, - { - "id": "4000", - "name": "News & Events", - "icon": "", - "group": 0, - "url": "", - "sub-item": [ - { - "id": "4001", - "name": "News", - "url": "/Images/Vectors" - }, - { - "id": "4002", - "name": "Data", - "flexpage": true, - "url": "/Images/Photos" - }, - { - "id": "4003", - "name": "Events", - "url": "/Images/Photos" - } - ] - }, - { - "id": "5000", - "name": "Resources", - "icon": "", - "group": 0, - "url": "", - "sub-item": [ - { - "id": "5001", - "name": "Vectors", - "flexpage": true, - "url": "/Images/Vectors" - }, - { - "id": "5002", - "name": "Ảnh Chụp", - "flexpage": true, - "url": "/Images/Photos" - } - ] - }, - { - "id": "6000", - "name": "Contact", - "icon": "", - "group": 0, - "url": "", - "sub-item": "" - } + }, + { + "id": "3002", + "name": "Aircraft Charter", + "url": "/Services/Aircraft-Charter", + "flexpage": true + }, + { + "id": "3003", + "name": "Cargo Tracking", + "url": "/Services/Cargo-Tracking", + "flexpage": true + }, + { + "id": "3004", + "name": "Groupage", + "url": "/Services/Groupage", + "flexpage": true + }, + { + "name": "Air Passenger", + "group": 1 + }, + { + "id": "3008", + "name": "Passenger GSSA", + "url": "/Services/Passenger-GSSA", + "flexpage": true + }, + { + "id": "3006", + "name": "Ticketing & Reservation", + "url": "/Services/Ticketing-Reservation", + "flexpage": true + }, + { + "id": "3007", + "name": "Check-in Services", + "url": "/Services/Check-In-Services", + "flexpage": true + }, + + { + "id": "3009", + "name": "Customer Service & Support", + "url": "/Services/Customer-Service-Support", + "flexpage": true + }, + { + "name": "Other Services", + "group": 1 + }, + { + "id": "3010", + "name": "Aviation Support", + "url": "/Services/Aviation-Support", + "flexpage": true + }, + { + "id": "3011", + "name": "Courier Service", + "url": "/Services/Courier-Service", + "flexpage": true + } + ] + }, + { + "id": "4000", + "name": "News & Events", + "icon": "", + "group": 0, + "url": "", + "sub-item": [ + { + "id": "4001", + "name": "News", + "flexpage": true, + "url": "/News-Events/News" + }, + { + "id": "4002", + "name": "Data", + "flexpage": true, + "url": "/News-Events/Data" + }, + { + "id": "4003", + "name": "Events", + "flexpage": true, + "url": "/News-Events/Events" + } + ] + }, + { + "id": "5000", + "name": "Resources", + "icon": "", + "group": 0, + "url": "", + "sub-item": [ + { + "id": "5001", + "name": "Vectors", + "flexpage": true, + "url": "/Images/Vectors" + }, + { + "id": "5002", + "name": "Ảnh Chụp", + "flexpage": true, + "url": "/Images/Photos" + } + ] + }, + { + "id": "6000", + "name": "Contact", + "icon": "", + "group": 0, + "url": "/Contact", + "sub-item": "" + } ] \ No newline at end of file diff --git a/TWA-App/Models/ServicesModel.cs b/TWA-App/Models/ServicesModel.cs new file mode 100644 index 0000000..befaf07 --- /dev/null +++ b/TWA-App/Models/ServicesModel.cs @@ -0,0 +1,37 @@ +using AppLibs.Libs; +using System.Collections.Generic; + +namespace TWA_App.Models +{ + public class ServicesModel + { + + + + public static async Task GetSidebar() + { + List wSNavigation = await WSNavigation.GetListMenu(); + var sidebar = wSNavigation[2].SubItem; + var hContent = ""; + foreach (var item in sidebar) + { + if (item.IsGroup) + { + if (hContent != "") + { + hContent += ""; + } + hContent += $"
{item.Name}
"; + } + else + { + hContent += $"{item.Name}"; + } + } + hContent += "
"; + return hContent; + } + } + + +} diff --git a/TWA-App/Program.cs b/TWA-App/Program.cs index 0106ce7..29657a5 100644 --- a/TWA-App/Program.cs +++ b/TWA-App/Program.cs @@ -40,17 +40,21 @@ if (!app.Environment.IsDevelopment()) } app.UseForwardedHeaders(); app.UseHttpsRedirection(); +app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); -app.MapStaticAssets(); - app.MapControllerRoute( name: "mapCompany", pattern: "Company/{id?}", defaults: new { controller = "Company", action = "Index" }) .WithStaticAssets(); +app.MapControllerRoute( + name: "mapServices", + pattern: "Services/{id?}", + defaults: new { controller = "Services", action = "Index" }) + .WithStaticAssets(); app.MapControllerRoute( name: "default", diff --git a/TWA-App/TWA-App.csproj b/TWA-App/TWA-App.csproj index e9384aa..c79d87d 100644 --- a/TWA-App/TWA-App.csproj +++ b/TWA-App/TWA-App.csproj @@ -17,25 +17,47 @@ - + Always - + Always - + Always - + Always - + + Always + + + Always + + + Always + + + Always + + + Always + + Always + + + + Always + + + diff --git a/TWA-App/Views/Home/Index.cshtml b/TWA-App/Views/Home/Index.cshtml index 14e10e2..3aa4376 100644 --- a/TWA-App/Views/Home/Index.cshtml +++ b/TWA-App/Views/Home/Index.cshtml @@ -91,25 +91,25 @@

- Trusted Air Partner + Cargo GSA Supervision Services

-

Safe, reliable air cargo booking and shipping, ensuring secure, timely, and cost-effective delivery

+

We offers airlines end-to-end capacity management, maximizing yield with experts in reservations, handling, revenue accounting, and competitive market monitoring

- Professional Booking & Live Tracking + Passenger GSA Service

-

Dedicated teams provide efficient cargo booking and shipping with real-time shipment tracking

+

We tailored specialized end-to-end solutions for airlines includes call/web reservation, handling limitations, FIT/group booking, personal effects, ADM/ACM, refund processing

-

Dedicated Customer Care

-

Committed to transparent, devoted service and full support for all customer needs in cargo and passenger transportation

+

Aviation Support

+

We offer Full-spectrum aviation support that range from handling supervision, ramp for cargo-passenger, maintenance, load control, lounges and warehousing even charter solution

@@ -145,7 +145,7 @@
  • procedures whereas processes
  • -

    Distinctively exploit optimal alignments for intuitive business applications through revolutionary catalysts for chang the Seamlessly optimal optimal alignments for intuitive.

    +

    TWA was established in 2014 as a General Sales Agent for air cargo and passenger services. Since then, we have successfully expanded into the passenger market, earning industry recognition for our unwavering professionalism. Our dedicated team leverages extensive experience and deep industry knowledge to deliver flexible, client-focused solutions. Through proactive management and a comprehensive suite of services - including sales, marketing, operations, customer service, and ground handling for both cargo and passenger segments, we have supported our clients’ sustained growth. Committed to maximizing revenue and minimizing costs, we provide dynamic, cost-efficient business solutions to leading airlines worldwide. At TWA, our singular focus on creating genuine competitive advantage drives every engagement and fosters long-term partnerships across the globe.

    @@ -174,7 +174,7 @@
    Cargo Tonnage -

    0

    +

    0

    @@ -185,7 +185,7 @@ Satisfied Clients -

    +0

    +

    +0

    @@ -196,7 +196,7 @@ Ticket Sales -

    0

    +

    0

    @@ -207,7 +207,7 @@ Annual Revenue -

    $0

    +

    $0

    @@ -268,6 +268,82 @@ + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + Proven impact & Trusted by experts +

    + Our Awards +

    +

    + We’re proud to be recognized for our craft across design, technology, and client success. These awards reflect our commitment to quality and measurable outcomes. +

    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +

    China Airline 2022 Million Dollar Sales Award

    +

    + China Airlines honored TWA as Top Sales, backed by CI’s 1,400 flights weekly (including 91 cargo) to 102 cities, delivering flexible solutions and strengthening CI’s market growth in Vietnam. +

    +
    +
    +
    +
    + +

    CX Top Agent Appreciation

    +

    + China Airlines honored TWA as Top Sales, backed by CI’s 1,400 flights weekly (including 91 cargo) to 102 cities, delivering flexible solutions and strengthening CI’s market growth in Vietnam. +

    +
    +
    +
    +
    + +

    + VJ Certificate of Appreciation +

    +

    + Honors exceptional results in sales growth, operational efficiency, and service quality, driving network expansion, higher customer satisfaction, and stronger brand reputation across priority markets globally. +

    +
    +
    +
    +
    + +

    PAL International Award Top Performer in 2025

    +

    + The partner leading international sales, yield/load stability, on-time performance, and adherence to PAL service standards—reflecting a shared commitment to market growth and end-to-end customer excellence. +

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    @@ -281,7 +357,7 @@
    -

    orem ipsum dolor sit amet, consectetur adipisicing elit. Eos aperiam porro reiciendis dolore doloribus repellendus tempora vitae quia voluptas ipsum eligend.

    +

    TWA provides full-spectrum aviation, charter, courier, and logistics solutions, delivering customized, efficient, and cost-effective services that maximize value, ensure flexibility, and support sustainable growth worldwide.

    @@ -297,8 +373,8 @@
    -

    Air Freight

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est amet similique ipsum reprehenderit sed.

    +

    Cargo GSSA

    +

    We offers airlines end-to-end capacity management, maximizing yield with experts in reservations, handling, revenue accounting, and competitive market monitoring.

    Read More
    @@ -313,8 +389,8 @@
    -

    Air Freight

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est amet similique ipsum reprehenderit sed.

    +

    Passenger GSSA

    +

    We tailored specialized end-to-end solutions for airlines includes call/web reservation, handling limitations, FIT/group booking, personal effects, ADM/ACM, refund processing.

    Read More
    @@ -329,8 +405,56 @@
    -

    Air Freight

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est amet similique ipsum reprehenderit sed.

    +

    Aviation Support

    +

    We offer Full-spectrum aviation support that range from handling supervision, ramp for cargo-passenger, maintenance, load control, lounges and warehousing even charter solution.

    + + Read More +
    + + +
    +
    +
    + +
    + +
    +
    +
    +

    Aircraft Charter

    +

    Passenger and cargo charters reach remote destinations, delivering vital supplies and handling heavy, oversized, or difficult cargo.

    + + Read More +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +

    Courier Service

    +

    Same-day on-demand and scheduled delivery, plus warehousing services, ensure fast, reliable logistics solutions and comprehensive support.

    + + Read More +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +

    Logistic

    +

    TWA delivering total logistics solutions that could customized to our customer’s requirements by more than 10 years of experience in this industry and our meticulous approach to solution design and execution.

    Read More
    @@ -471,11 +595,11 @@
    - +
    -
    +

    We will contact you soon!

    @@ -571,6 +695,21 @@

    +
    +
    +
    + Head Office: Ho Chi Minh City + Branch Office: Da Nang City + Branch Office: Phnom Penh City +
    +
    +
    +
    + Branch Office: Ha Noi City + Branch Office: Yangon City +
    +
    +
    diff --git a/TWA-App/Views/Partial/MenuAP.cshtml b/TWA-App/Views/Partial/MenuAP.cshtml index c2f93e6..f2899c2 100644 --- a/TWA-App/Views/Partial/MenuAP.cshtml +++ b/TWA-App/Views/Partial/MenuAP.cshtml @@ -9,7 +9,7 @@ if (i.SubItem == null) { } else @@ -19,7 +19,7 @@ @switch (i.ID) { case "3000": -