sungrouptech 6 tháng trước cách đây
commit
bc720d8a8c
100 tập tin đã thay đổi với 14999 bổ sung0 xóa
  1. 34 0
      .gitignore
  2. 5 0
      website/.config/dotnet-tools.json
  3. 111 0
      website/Common/Constants.cs
  4. 41 0
      website/Components/AdvertiseArea.cs
  5. 27 0
      website/Components/ChooseForm.cs
  6. 20 0
      website/Components/FooterOutside.cs
  7. 26 0
      website/Components/HeaderHome.cs
  8. 25 0
      website/Components/LotoNumber.cs
  9. 29 0
      website/Components/LotoNumberHistory.cs
  10. 24 0
      website/Components/PaymentForm.cs
  11. 24 0
      website/Components/ResultForm.cs
  12. 24 0
      website/Components/SmallHeader.cs
  13. 29 0
      website/Components/TicketForm.cs
  14. 27 0
      website/Components/TicketHistory.cs
  15. 359 0
      website/Controllers/AccountController.cs
  16. 624 0
      website/Controllers/BaseController.cs
  17. 428 0
      website/Controllers/BuyTicketController.cs
  18. 150 0
      website/Controllers/HistoryController.cs
  19. 802 0
      website/Controllers/HomeController.cs
  20. 29 0
      website/Controllers/PartialController.cs
  21. 231 0
      website/Controllers/ProfileController.cs
  22. 22 0
      website/Dockerfile
  23. 31 0
      website/Extensions/ConfigAction.cs
  24. 62 0
      website/Extensions/Encrytion.cs
  25. 29 0
      website/Extensions/RewriteSubdomainRule.cs
  26. 34 0
      website/Extensions/SessionExtensions.cs
  27. 2025 0
      website/Languages/Lang.Designer.cs
  28. 776 0
      website/Languages/Lang.fr.resx
  29. 774 0
      website/Languages/Lang.resx
  30. 441 0
      website/Languages/Question.Designer.cs
  31. 369 0
      website/Languages/Question.fr.resx
  32. 373 0
      website/Languages/Question.resx
  33. 69 0
      website/LotteryWebApp.csproj
  34. 25 0
      website/LotteryWebApp.sln
  35. 24 0
      website/Models/AccountViewModel.cs
  36. 35 0
      website/Models/BuyTicketViewModel.cs
  37. 11 0
      website/Models/ErrorViewModel.cs
  38. 27 0
      website/Models/HistoryViewModel.cs
  39. 60 0
      website/Models/HomeViewModel.cs
  40. 18 0
      website/Models/PartialViewModel.cs
  41. 30 0
      website/Models/ProfileViewModel.cs
  42. 42 0
      website/Program.cs
  43. 20 0
      website/Properties/PublishProfiles/FolderProfile.pubxml
  44. 36 0
      website/Properties/launchSettings.json
  45. 92 0
      website/README.md
  46. 5 0
      website/Rsa/Policy.txt
  47. 10 0
      website/Rsa/private-rsa-key.xml
  48. 3 0
      website/Rsa/private.pem
  49. 4 0
      website/Rsa/public-rsa-key.xml
  50. 3 0
      website/Rsa/public.pem
  51. 141 0
      website/Service/ApiClasses.cs
  52. 17 0
      website/Service/ApiConstants.cs
  53. 339 0
      website/Service/ApiFunctions.cs
  54. 364 0
      website/Service/ApiModels.cs
  55. 132 0
      website/Startup.cs
  56. 96 0
      website/Views/Account/ForgotPassword.cshtml
  57. 79 0
      website/Views/Account/Index.cshtml
  58. 238 0
      website/Views/Account/Login.cshtml
  59. 134 0
      website/Views/Account/Register.cshtml
  60. 144 0
      website/Views/BuyTicket/Choose.cshtml
  61. 84 0
      website/Views/BuyTicket/Index.cshtml
  62. 62 0
      website/Views/BuyTicket/LastTermResult.cshtml
  63. 292 0
      website/Views/BuyTicket/Payment.cshtml
  64. 119 0
      website/Views/History/Index.cshtml
  65. 210 0
      website/Views/History/TicketDetail.cshtml
  66. 22 0
      website/Views/History/UserTicket.cshtml
  67. 253 0
      website/Views/Home/FAQ.cshtml
  68. 125 0
      website/Views/Home/FlashView.cshtml
  69. 134 0
      website/Views/Home/Index.cshtml
  70. 6 0
      website/Views/Home/Privacy.cshtml
  71. 120 0
      website/Views/Home/Results.cshtml
  72. 221 0
      website/Views/Home/Rules.cshtml
  73. 41 0
      website/Views/Home/TermResult.cshtml
  74. 78 0
      website/Views/Home/TermResultHistory.cshtml
  75. 405 0
      website/Views/Home/Transfer.cshtml
  76. 11 0
      website/Views/Home/Update.cshtml
  77. 17 0
      website/Views/Partial/Inform.cshtml
  78. 37 0
      website/Views/Partial/Language.cshtml
  79. 84 0
      website/Views/Partial/OTP.cshtml
  80. 122 0
      website/Views/Profile/ChangePassword.cshtml
  81. 107 0
      website/Views/Profile/HowToPlay.cshtml
  82. 163 0
      website/Views/Profile/Index.cshtml
  83. 130 0
      website/Views/Profile/ProfileInfo.cshtml
  84. 360 0
      website/Views/Shared/Components/AdvertiseArea/AdvertiseArea.cshtml
  85. 56 0
      website/Views/Shared/Components/ChooseForm/ChooseForm.cshtml
  86. 35 0
      website/Views/Shared/Components/FooterOutside/FooterOutside.cshtml
  87. 156 0
      website/Views/Shared/Components/HeaderHome/HeaderHome.cshtml
  88. 231 0
      website/Views/Shared/Components/LotoNumber/LotoNumber.cshtml
  89. 128 0
      website/Views/Shared/Components/LotoNumberHistory/LotoNumberHistory.cshtml
  90. 57 0
      website/Views/Shared/Components/PaymentForm/PaymentForm.cshtml
  91. 48 0
      website/Views/Shared/Components/ResultForm/ResultForm.cshtml
  92. 38 0
      website/Views/Shared/Components/SmallHeader/SmallHeader.cshtml
  93. 210 0
      website/Views/Shared/Components/TicketForm/TicketForm.cshtml
  94. 126 0
      website/Views/Shared/Components/TicketHistory/TicketHistory.cshtml
  95. 25 0
      website/Views/Shared/Error.cshtml
  96. 289 0
      website/Views/Shared/_Layout.cshtml
  97. 186 0
      website/Views/Shared/_NothingLayout.cshtml
  98. 2 0
      website/Views/Shared/_ValidationScriptsPartial.cshtml
  99. 3 0
      website/Views/_ViewImports.cshtml
  100. 3 0
      website/Views/_ViewStart.cshtml

+ 34 - 0
.gitignore

@@ -0,0 +1,34 @@
+# From .NET Core 3.0 you can use the command: `dotnet new gitignore` to generate a customizable .gitignore file
+
+*.swp
+*.*~
+project.lock.json
+.DS_Store
+*.pyc
+
+# Visual Studio Code
+.vscode
+
+# User-specific files
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+build/
+bld/
+[Bb]in/
+[Oo]bj/
+msbuild.log
+msbuild.err
+msbuild.wrn
+
+# Visual Studio 2015
+.vs/

+ 5 - 0
website/.config/dotnet-tools.json

@@ -0,0 +1,5 @@
+{
+  "version": 1,
+  "isRoot": true,
+  "tools": {}
+}

+ 111 - 0
website/Common/Constants.cs

@@ -0,0 +1,111 @@
+using System;
+
+namespace LotteryWebApp.Common
+{
+    public class Constants
+    {
+        public const String HOME_NAVIGATOR = "1";
+        public const String BUY_TICKET_NAVIGATOR = "2";
+        public const String HISTORY_NAVIGATOR = "3";
+        public const String CASH_AGENT_NAVIGATOR = "4";
+        public const String PROFILE_NAVIGATOR = "5";
+
+        public const String PATH_CONTENT = "pathContent";
+        public const String PATH_OUTSIDE = "pathOutside";
+        public const String SERVICE_NAME = "serviceName";
+        public const String SUB_DOMAIN = "subDomain";
+        public const String SUB_DOMAIN_ = "subDomain_";
+        public const String CHANNEL = "channel";
+
+
+        public const string TRANSFER_SHOW = "1";
+        public const string TRANSFER_CONFIRM = "2";
+        public const string TRANSFER_RESULT = "3";
+
+        public const string LOGIN_ENTER_MSISDN = "1";
+        public const string LOGIN_ENTER_OTP = "2";
+
+        public const string TRANSACTION_PROCESSING_CODE = "0";
+        public const string TRANSACTION_SUCCESS_CODE = "1";
+        public const string TRANSACTION_PENDING_CODE = "2";
+        public const string TRANSACTION_REVERTED_CODE = "3";
+
+
+        public const string PAYMENT_SHOW = "1";
+        public const string PAYMENT_CHECK_OTP = "2";
+        public const string PAYMENT_RESULT = "3";
+
+        public const int CHANGE_PASSWORD_SHOW = 1;
+        public const int CHANGE_PASSWORD_RESULT = 2;
+
+        public const int PROFILE_INFO_SHOW = 1;
+        public const int PROFILE_INFO_RESULT = 2;
+
+        public const int FORGOT_PASSWORD_SHOW = 1;
+        public const int FORGOT_PASSWORD_RESULT = 2;
+        public const int FORGOT_PASSWORD_REDIRECT = 3;
+
+        public const string NEW_YORK_NUMBERS_CODE = "10";
+        public const string NEW_YORK_WIN4_CODE = "11";
+        public const string FLORIDA_PICK3_CODE = "12";
+        public const string FLORIDA_PICK4_CODE = "13";
+
+
+        public const string BOULCHANS_CODE = "3";
+        public const string NEW_YORK_BOLET_CODE = "4";
+        public const string NEW_YORK_MAYRAJ_CODE = "5";
+        public const string NEW_YORK_LOTTO3_CODE = "6";
+        public const string FLORIDA_BOLET_CODE = "7";
+        public const string FLORIDA_MAYRAJ_CODE = "8";
+        public const string FLORIDA_LOTTO3_CODE = "9";
+
+        public const string TERM_HAS_RESULT_TYPE = "1";
+        public const string TERM_HAS_NOT_RESULT_TYPE = "0";
+
+        public const string DECS = "desc";
+        public const string ASC = "asc";
+
+        public const string ROW_ON_PAGE = "10";
+        public const string ALL_DATA = "-1";
+
+        public const string BASIC_WALLET_TICKET = "0";
+        public const string NATCASH_WALLET_TICKET = "1";
+
+        public const string BASIC_WALLET_TRANSFER = "1";
+        public const string NATCASH_WALLET_TRANSFER = "2";
+
+        public const string AFTERNOON_CODE = "0";
+        public const string EVENING_CODE = "1";
+
+        public const string BOLET_CODE = "1";
+        public const string MAYRAJ_CODE = "2";
+        public const string LOTTO3_CODE = "10";
+
+        public const string NOT_DRAW_CODE = "0";
+        public const string WIN_CODE = "2";
+        public const string DRAWN_CODE = "1";
+
+        public const String PATH = "/img/";
+        //public const String URL_GET_MSISDN = "http://apisuperapp.natcom.com.ht/privateapi/decrypt/v1/users";
+        public const String URL_GET_MSISDN = "http://10.228.102.57:8288/privateapi/decrypt/v1/users";
+
+        public const string WEB_CHANNEL = "WEB";
+
+    }
+
+    public class Code
+    {
+        public const String SUCCESS = "0";
+        public const String FAILURE = "-1";
+        public const String ERROR = "-2";
+        public const String EXCEPTION = "-3";
+        public const String OTP_SUCCESS = "100";
+        public const String SESSION_EXPIRED = "35";
+
+        public const String WRONG_USER_PASS = "1";
+        public const String NOT_AUTHEN = "-4";
+
+        public const int SUCCESS_CODE = 200;
+
+    }
+}

+ 41 - 0
website/Components/AdvertiseArea.cs

@@ -0,0 +1,41 @@
+using LotteryWebApp.Controllers;
+using LotteryWebApp.Service;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace LotteryWebApp.Components
+{
+
+    public class AdvertiseAreaModel
+    {
+        public List<Term> listTerm { get; set; }
+        public long timeLeft { get; set; }
+        public String timeExpired { get; set; }
+        public String timeNow { get; set; }
+    }
+
+    public class AdvertiseArea : ViewComponent
+    {
+        APIFunctions api = new APIFunctions();
+
+        public async Task<IViewComponentResult> InvokeAsync(List<Term> listTerm)
+        {
+            AdvertiseAreaModel model = new AdvertiseAreaModel();
+
+            model.listTerm = listTerm;
+
+            if (model.listTerm != null && model.listTerm.Count > 0)
+            {
+                model.timeLeft = BaseController.getCountTimeToTimestamp(model.listTerm[0].date_random);
+                model.timeExpired = DateTime.ParseExact(model.listTerm[0].date_random, BaseController.formats, new CultureInfo("en-US"), DateTimeStyles.None).ToString("MM/dd/yyy HH:mm:ss");
+                model.timeNow = DateTime.Now.ToString("MM/dd/yyy HH:mm:ss");
+            }
+
+            return View("AdvertiseArea", model);
+        }
+    }
+}

+ 27 - 0
website/Components/ChooseForm.cs

@@ -0,0 +1,27 @@
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace LotteryWebApp.Components
+{
+
+    public class ChooseFormModel
+    {
+        public long tics { get; set; }
+        public string ticketType { get; set; }
+    }
+
+    public class ChooseForm : ViewComponent
+    {
+        public async Task<IViewComponentResult> InvokeAsync(String ticketType)
+        {
+            ChooseFormModel model = new ChooseFormModel();
+            long milliseconds = DateTime.Now.Ticks;
+            model.tics = milliseconds;
+            model.ticketType = ticketType; 
+            return View("ChooseForm", model);
+        }
+    }
+}

+ 20 - 0
website/Components/FooterOutside.cs

@@ -0,0 +1,20 @@
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+namespace LotteryWebApp.Components
+{
+    public class FooterOutsideModel
+    {
+    }
+
+    public class FooterOutside : ViewComponent
+    {
+        public async Task<IViewComponentResult> InvokeAsync(String url)
+        {
+            FooterOutsideModel model = new FooterOutsideModel();
+            return View("FooterOutside", model);
+        }
+    }
+}

+ 26 - 0
website/Components/HeaderHome.cs

@@ -0,0 +1,26 @@
+using LotteryWebApp.Service;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace LotteryWebApp.Components
+{
+    public class HeaderHomeModel
+    {
+        public Profile profile;
+        public UserStatus userStatus;
+    }
+    public class HeaderHome : ViewComponent
+    {
+        public async Task<IViewComponentResult> InvokeAsync(Profile profile, UserStatus userStatus)
+        {
+            HeaderHomeModel model = new HeaderHomeModel();
+
+            model.profile = profile;
+            model.userStatus = userStatus;
+            return View("HeaderHome", model);
+        }
+    }
+}

+ 25 - 0
website/Components/LotoNumber.cs

@@ -0,0 +1,25 @@
+using LotteryWebApp.Service;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace LotteryWebApp.Components
+{
+    public class LotoNumberModel
+    {
+        public Term data;
+        public string type;
+    }
+    public class LotoNumber : ViewComponent
+    {
+        public async Task<IViewComponentResult> InvokeAsync(Term data, string type)
+        {
+            LotoNumberModel model = new LotoNumberModel();
+            model.data = data;
+            model.type = type;
+            return View("LotoNumber", model);
+        }
+    }
+}

+ 29 - 0
website/Components/LotoNumberHistory.cs

@@ -0,0 +1,29 @@
+using LotteryWebApp.Service;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace LotteryWebApp.Components
+{
+    public class LotoNumberHistoryModel
+    {
+        public string[] data;
+        public string type;
+        public Term term;
+
+    }
+
+    public class LotoNumberHistory : ViewComponent
+    {
+        public async Task<IViewComponentResult> InvokeAsync(string[] data, Term term, string type)
+        {
+            LotoNumberHistoryModel model = new LotoNumberHistoryModel();
+            model.data = data == null ? new string[] { } : data;
+            model.type = type;
+            model.term = term;
+            return View("LotoNumberHistory", model);
+        }
+    }
+}

+ 24 - 0
website/Components/PaymentForm.cs

@@ -0,0 +1,24 @@
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace LotteryWebApp.Components
+{
+    public class PaymentFormModel
+    {
+        public String data { get; set; }
+        public string ticketType { get; set; }
+    }
+    public class PaymentForm : ViewComponent
+    {
+        public async Task<IViewComponentResult> InvokeAsync(String data, String ticketType)
+        {
+            PaymentFormModel model = new PaymentFormModel();
+            model.data = data;
+            model.ticketType = ticketType;
+            return View("PaymentForm", model);
+        }
+    }
+}

+ 24 - 0
website/Components/ResultForm.cs

@@ -0,0 +1,24 @@
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace LotteryWebApp.Components
+{
+    public class ResultFormModel
+    {
+        public String url;
+        public String title;
+    }
+    public class ResultForm : ViewComponent
+    {
+        public async Task<IViewComponentResult> InvokeAsync(String url, String title)
+        {
+            ResultFormModel model = new ResultFormModel();
+            model.url = url;
+            model.title = title;
+            return View("ResultForm", model);
+        }
+    }
+}

+ 24 - 0
website/Components/SmallHeader.cs

@@ -0,0 +1,24 @@
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace LotteryWebApp.Components
+{
+    public class SmallHeaderModel
+    {
+        public String url;
+        public String title;
+    }
+    public class SmallHeader : ViewComponent
+    {
+        public async Task<IViewComponentResult> InvokeAsync(String url, String title)
+        {
+            SmallHeaderModel model = new SmallHeaderModel();
+            model.url = url;
+            model.title = title;
+            return View("SmallHeader", model);
+        }
+    }
+}

+ 29 - 0
website/Components/TicketForm.cs

@@ -0,0 +1,29 @@
+using LotteryWebApp.Service;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace LotteryWebApp.Components
+{
+
+    public class TicketFormModel
+    {
+        public List<Term> data { get; set; }
+        public string type { get; set; }
+
+    }
+
+    public class TicketForm : ViewComponent
+    {
+        public async Task<IViewComponentResult> InvokeAsync(List<Term> data, string type)
+        {
+            TicketFormModel model = new TicketFormModel();
+            model.data = data != null ? data : new List<Term>();
+            model.type = type;
+
+            return View("TicketForm", model);
+        }
+    }
+}

+ 27 - 0
website/Components/TicketHistory.cs

@@ -0,0 +1,27 @@
+using LotteryWebApp.Service;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace LotteryWebApp.Components
+{
+
+    public class TicketHistoryModel
+    {
+        public Ticket data { get; set; }
+        public string winType { get; set; }
+    }
+
+    public class TicketHistory : ViewComponent
+    {
+        public async Task<IViewComponentResult> InvokeAsync(Ticket data, string winType)
+        {
+            TicketHistoryModel model = new TicketHistoryModel();
+            model.data = data;
+            model.winType = winType;
+            return View("TicketHistory", model);
+        }
+    }
+}

+ 359 - 0
website/Controllers/AccountController.cs

@@ -0,0 +1,359 @@
+using LotteryWebApp.Common;
+using LotteryWebApp.Models;
+using LotteryWebApp.Service;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Configuration;
+using System;
+using LotteryWebApp.Languages;
+using LotteryWebApp.Extensions;
+using System.Globalization;
+using Microsoft.AspNetCore.Http;
+using System.IO;
+
+namespace LotteryWebApp.Controllers
+{
+    [AutoValidateAntiforgeryToken]
+    public class AccountController : BaseController
+    {
+        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
+
+        IConfiguration configuration;
+        private readonly IWebHostEnvironment webHostEnvironment;
+        APIFunctions api = new APIFunctions();
+
+        public AccountController(IConfiguration _configuration, IWebHostEnvironment hostEnvironment)
+        {
+            configuration = _configuration;
+            webHostEnvironment = hostEnvironment;
+        }
+
+        public String GetParameter(String key)
+        {
+            return configuration.GetSection(key).Value;
+        }
+
+        public IActionResult Index()
+        {
+            if (!CheckAuthToken())
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+            AccountIndex_ViewModel model = new AccountIndex_ViewModel();
+            return View("Index", model);
+        }
+
+        public IActionResult Login(String code, String step, String phonenumber, String message)
+        {
+            //return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Home/Update");
+
+            AccountLogin_ViewModel model = new AccountLogin_ViewModel();
+
+            try
+            {
+                model.code = code;
+                model.step = step != null ? step : Constants.LOGIN_ENTER_MSISDN;
+                model.message = message;
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+
+            return View("Login", model);
+        }
+
+        public IActionResult Logout()
+        {
+            ClearCache();
+            return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+        }
+
+        [ValidateAntiForgeryToken]
+        public JsonResult CheckMsisdn_Action(String phonenumber)
+        {
+            // check Msisdn
+            String msisdn = validateMsisdn(phonenumber);
+            if (msisdn == "")
+            {
+                return Json(new
+                {
+                    code = Code.FAILURE,
+                    message = Lang.phone_invalid
+                });
+            }
+            //msisdn = "50940236545";
+            HttpContext.Session.SetComplexData("msisdn", msisdn);
+            return Json(new
+            {
+                code = Code.SUCCESS,
+            });
+        }
+
+        [ValidateAntiForgeryToken]
+        public JsonResult ForgotPassword_Action(string phonenumber)
+        {
+            try
+            {
+                // resent password to return result
+                String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+
+                //String msisdn = validateMsisdn(phonenumber);
+                if (msisdn == null)
+                {
+                    return Json(new
+                    {
+                        code = Code.FAILURE,
+                        message = Lang.phone_invalid
+                    });
+                }
+                // bo cho test
+                RegisterRequest request = new RegisterRequest();
+                request.Msisdn = msisdn;
+                RegisterResponse reset = api.UserForgotPasswordApi(configuration, request);
+                return Json(new
+                {
+                    code = int.Parse(reset.status),
+                    message = GetLangFromCode(reset.status)
+                });
+                //return Json(new
+                //{
+                //    code = Code.SUCCESS,
+                //});
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return Json(new
+            {
+                code = Code.FAILURE,
+                message = Lang.error_happened
+            });
+        }
+
+        [ValidateAntiForgeryToken]
+        public JsonResult Login_Action(String step, String phonenumber, String password)
+        {
+            try
+            {
+                String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+                if (msisdn != null)
+                {
+                    //password = "589219";
+
+                    RegisterRequest request = new RegisterRequest();
+                    request.Msisdn = msisdn;
+                    request.pass = password;
+                    RegisterResponse login = api.UserLoginApi(configuration, request);
+                    if (login.status == Code.SUCCESS.ToString())
+                    {
+                        // create session
+                        // create new auth
+                        CreateAuthToken();
+
+                        // login success --> store session
+                        HttpContext.Session.SetComplexData("msisdn", msisdn);
+                        HttpContext.Session.SetComplexData("token", login.token);
+
+                        // load profile
+
+                        // load user status
+                        UserGetProfileRequest userGetProfileRequest = new UserGetProfileRequest
+                        {
+                            users = msisdn,
+                            token = login.token
+                        };
+                        Profile profile = api.UserLoadProfileApi(configuration, userGetProfileRequest);
+                        HttpContext.Session.SetComplexData("profile", profile);
+
+                        // load profile
+                        UserStatusRequest userStatusRequest = new UserStatusRequest
+                        {
+                            users = msisdn,
+                            token = login.token
+                        };
+                        UserStatus userStatus = api.GetUserStatusApi(configuration, userStatusRequest);
+                        HttpContext.Session.SetComplexData("userStatus", userStatus);
+                    }
+                    return Json(new
+                    {
+                        code = int.Parse(login.status),
+                        message = GetLangFromCode(login.status)
+                    });
+                }
+                else
+                {
+                    return Json(new
+                    {
+                        code = Code.FAILURE,
+                        message = Lang.error_happened
+                    });
+                }
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return Json(new
+            {
+                code = Code.FAILURE,
+                message = Lang.error_happened
+            });
+        }
+
+        public IActionResult Register(string code)
+        {
+            AccountRegister_ViewModel model = new AccountRegister_ViewModel();
+            model.code = code;
+            return View("Register", model);
+        }
+
+
+        [ValidateAntiForgeryToken]
+        public JsonResult Register_Action(string phonenumber, string fullname, string birthday)
+        {
+            try
+            {
+                // resent password to return result
+                String msisdn = validateMsisdn(phonenumber);
+                if (msisdn == "")
+                {
+                    return Json(new
+                    {
+                        code = Code.FAILURE,
+                        message = Lang.phone_invalid
+                    });
+                }
+
+                if (fullname == null)
+                {
+                    return Json(new
+                    {
+                        code = Code.FAILURE,
+                        message = Lang.fullname_not_valid
+                    });
+                }
+
+                RegisterRequest request = new RegisterRequest();
+                request.Msisdn = msisdn;
+                RegisterResponse register = api.UserRegisterApi(configuration, request);
+                if (register.status == Code.SUCCESS)
+                {
+                    // convert birthday to dd/mm/yyyy
+                    String birthdayFormat = DateTime.ParseExact(birthday, "yyyy-MM-dd", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy");
+                    Profile profile = new Profile();
+                    profile.birthday = birthdayFormat;
+                    profile.fullName = fullname;
+                    HttpContext.Session.SetComplexData("profile", profile);
+                    HttpContext.Session.SetComplexData("token", register.token);
+
+                    // create profile
+                    UserUpdateProfileRequest userUpdateProfileRequest = new UserUpdateProfileRequest();
+                    userUpdateProfileRequest.users = msisdn;
+                    userUpdateProfileRequest.fullName = fullname;
+                    userUpdateProfileRequest.birthday = birthdayFormat;
+                    userUpdateProfileRequest.token = register.token;
+
+                    UserUpdateProfileResponse updateProfile = api.UserUpdateProfileApi(configuration, userUpdateProfileRequest);
+                    if (updateProfile.status == Code.SUCCESS)
+                    {
+                        // return login screen
+
+                    }
+                }
+                return Json(new
+                {
+                    code = int.Parse(register.status),
+                    message = GetLangFromCode(register.status)
+                });
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return Json(new
+            {
+                code = Code.FAILURE,
+                message = Lang.error_happened
+            });
+        }
+
+        public IActionResult ForgotPassword(String code)
+        {
+            if (!CheckAuthToken())
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+            AccountForgotPassword_ViewModel model = new AccountForgotPassword_ViewModel();
+            model.code = code;
+            return View("ForgotPassword", model);
+        }
+
+        [ValidateAntiForgeryToken]
+        [Produces("application/json")]
+        [Consumes("multipart/form-data")]
+        public JsonResult UploadAvatar([FromForm] IFormFile user_avatar)
+        {
+            try
+            {
+                // check user
+                if (!CheckAuthToken())
+                {
+                    log.Info("Must login");
+                    return Json(new
+                    {
+                        code = Code.NOT_AUTHEN,
+                        message = Lang.must_login
+                    });
+                }
+
+                //var user_avatar = HttpContext.Request.Form.Files;
+                if (user_avatar != null)
+                {
+                    String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+                    Profile profile = HttpContext.Session.GetComplexData<Profile>("profile");
+
+                    IFormFile image = user_avatar;
+
+                    string uploadsFolder = Path.Combine(webHostEnvironment.WebRootPath, "img/" + profile.users);
+                    Directory.CreateDirectory(uploadsFolder);
+
+                    string uniqueFileName = Guid.NewGuid().ToString() + "_" + image.FileName;
+                    string filePath = Path.Combine(uploadsFolder, uniqueFileName);
+                    using (var fileStream = new FileStream(filePath, FileMode.Create))
+                    {
+                        image.CopyTo(fileStream);
+                    }
+
+                    profile.realPicture = uniqueFileName;
+                    profile.picture = Constants.PATH + profile.users + "/" + uniqueFileName;
+                    HttpContext.Session.SetComplexData("profile", profile);
+
+                    return Json(new
+                    {
+                        code = Code.SUCCESS,
+                    });
+                }
+                else
+                {
+                    log.Error("user avatar error");
+                    return Json(new
+                    {
+                        code = Code.ERROR,
+                        message = Lang.user_avatar_error
+                    });
+                }
+            }
+            catch (Exception ex)
+            {
+                log.Error("Exception ", ex);
+            }
+            return Json(new
+            {
+                code = Code.FAILURE,
+                message = Lang.error_happened
+            });
+        }
+    }
+}

+ 624 - 0
website/Controllers/BaseController.cs

@@ -0,0 +1,624 @@
+using System;
+using System.Globalization;
+using System.IO;
+using System.Net.Http;
+using System.Security.Cryptography;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml;
+using log4net;
+using LotteryWebApp.Common;
+using LotteryWebApp.Languages;
+using LotteryWebApp.Service;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Configuration;
+using NcGamesWebView.Extensions;
+
+namespace LotteryWebApp.Controllers
+{
+    public class BaseController : Controller
+    {
+        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
+
+        public static string[] formats =
+        {
+            "M/d/yyyy h:mm:ss tt",
+            "M/d/yyyy h:mm tt",
+            "MM/dd/yyyy hh:mm:ss",
+            "M/d/yyyy h:mm:ss",
+            "M/d/yyyy hh:mm tt",
+            "M/d/yyyy hh tt",
+            "M/d/yyyy h:mm",
+            "M/d/yyyy h:mm",
+            "MM/dd/yyyy hh:mm",
+            "M/dd/yyyy hh:mm",
+            "MM/d/yyyy HH:mm:ss.ffffff, dd/MM/yyyy hh:mm",
+            "M/dd/yyyy h:mm:ss tt",
+            "dd/MM/yyyy HH:mm:ss"
+        };
+
+        public static string RandomString(int size, bool lowerCase)
+        {
+            StringBuilder builder = new StringBuilder();
+            Random random = new Random();
+            char ch;
+            for (int i = 0; i < size; i++)
+            {
+                ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
+                builder.Append(ch);
+            }
+            if (lowerCase)
+                return builder.ToString().ToLower();
+            return builder.ToString();
+        }
+
+        // validate phone number
+        public static String validateMsisdn(String input)
+        {
+            String CountryCode = "509";
+
+            if (input == null || input.Length == 0 || !long.TryParse(input, out long temp))
+            {
+                return "";
+            }
+            else if (
+                (
+                    (
+                        input.StartsWith("32")
+                        || input.StartsWith("33")
+                        || input.StartsWith("35")
+                        || input.StartsWith("40")
+                        || input.StartsWith("41")
+                        || input.StartsWith("42")
+                        || input.StartsWith("55")
+                        || input.StartsWith("43")
+                        || input.StartsWith("44")
+                        || input.StartsWith("45")
+                    )
+                    && input.Length == 8
+                )
+            )
+            {
+                // 066200017 55797979
+                input = CountryCode + input;
+                return input.Trim();
+            }
+            else if (input.StartsWith(CountryCode) && input.Length == 11)
+            {
+                String removeCountry = input.Substring(3);
+                if ((removeCountry.StartsWith("32") || removeCountry.StartsWith("33") || removeCountry.StartsWith("35") || removeCountry.StartsWith("40") ||
+                    removeCountry.StartsWith("41") || removeCountry.StartsWith("55") || removeCountry.StartsWith("42") || removeCountry.StartsWith("43") || 
+                    removeCountry.StartsWith("44") || removeCountry.StartsWith("45")))
+                {
+                    removeCountry = CountryCode + removeCountry;
+                    return input.Trim();
+                }
+                else
+                {
+                    return "";
+                }
+            }
+            else
+                return "";
+        }
+
+        public string ConvertToGameID(string termType, string ticketType)
+        {
+            if (termType == Constants.BOULCHANS_CODE)
+            {
+                return Constants.BOULCHANS_CODE;
+            }
+            else if (
+                termType == Constants.NEW_YORK_BOLET_CODE
+                || termType == Constants.NEW_YORK_MAYRAJ_CODE
+                || termType == Constants.NEW_YORK_LOTTO3_CODE
+            )
+            {
+                switch (ticketType)
+                {
+                    case Constants.BOLET_CODE:
+                        return Constants.NEW_YORK_BOLET_CODE;
+                    case Constants.MAYRAJ_CODE:
+                        return Constants.NEW_YORK_MAYRAJ_CODE;
+                    default:
+                        return Constants.NEW_YORK_LOTTO3_CODE;
+                }
+            }
+            else
+            {
+                switch (ticketType)
+                {
+                    case Constants.BOLET_CODE:
+                        return Constants.FLORIDA_BOLET_CODE;
+                    case Constants.MAYRAJ_CODE:
+                        return Constants.FLORIDA_MAYRAJ_CODE;
+                    default:
+                        return Constants.FLORIDA_LOTTO3_CODE;
+                }
+            }
+        }
+
+        public string ConvertToListGameID(String gameIDCode)
+        {
+            switch (gameIDCode)
+            {
+                case Constants.NEW_YORK_BOLET_CODE:
+                    return Constants.NEW_YORK_BOLET_CODE + "," + Constants.FLORIDA_BOLET_CODE;
+                case Constants.NEW_YORK_MAYRAJ_CODE:
+                    return Constants.NEW_YORK_MAYRAJ_CODE + "," + Constants.FLORIDA_MAYRAJ_CODE;
+                case Constants.BOULCHANS_CODE:
+                    return Constants.BOULCHANS_CODE;
+                default:
+                    return Constants.NEW_YORK_LOTTO3_CODE + "," + Constants.FLORIDA_LOTTO3_CODE;
+            }
+        }
+
+        public static string ConvertToWinType(String winType)
+        {
+            switch (winType)
+            {
+                case Constants.NOT_DRAW_CODE:
+                    return Lang.not_draw;
+                case Constants.WIN_CODE:
+                    return Lang.win;
+                default:
+                    return Lang.drawn;
+            }
+        }
+
+        public static string ConvertGameIdToTerm(string gameId)
+        {
+            switch (gameId)
+            {
+                case Constants.NEW_YORK_BOLET_CODE:
+                    return Lang.new_york_lottery;
+                case Constants.NEW_YORK_MAYRAJ_CODE:
+                    return Lang.new_york_lottery;
+                case Constants.NEW_YORK_LOTTO3_CODE:
+                    return Lang.new_york_lottery;
+                case Constants.FLORIDA_BOLET_CODE:
+                    return Lang.florida_lottery;
+                case Constants.FLORIDA_MAYRAJ_CODE:
+                    return Lang.florida_lottery;
+                case Constants.FLORIDA_LOTTO3_CODE:
+                    return Lang.florida_lottery;
+                case Constants.BOULCHANS_CODE:
+                    return "BOULCHANS";
+                default:
+                    return Lang.new_york_lottery;
+            }
+        }
+
+        public static string ConvertGameIdToName(string gameId)
+        {
+            switch (gameId)
+            {
+                case Constants.NEW_YORK_BOLET_CODE:
+                    return Lang.bolet;
+                case Constants.NEW_YORK_MAYRAJ_CODE:
+                    return Lang.maryaj;
+                case Constants.NEW_YORK_LOTTO3_CODE:
+                    return Lang.lotto3;
+                case Constants.FLORIDA_BOLET_CODE:
+                    return Lang.bolet;
+                case Constants.FLORIDA_MAYRAJ_CODE:
+                    return Lang.maryaj;
+                case Constants.FLORIDA_LOTTO3_CODE:
+                    return Lang.lotto3;
+                case Constants.BOULCHANS_CODE:
+                    return "BOULCHANS";
+                default:
+                    return Lang.new_york_lottery;
+            }
+        }
+
+        public static string GetLangFromCode(string code)
+        {
+            switch (code)
+            {
+                case "1":
+                    return Lang.login_fail_wrong_pass;
+                case "0":
+                    return Lang.success;
+                case "-1":
+                    return Lang.error_happened;
+                case "-2":
+                    return Lang.system_update;
+                case "2":
+                    return Lang.term_timeout;
+                case "3":
+                    return Lang.ticket_invalid;
+                case "7":
+                    return "User was locked";
+                case "9":
+                    return Lang.reset_after_1_minute;
+                case "4":
+                    return Lang.params_invalid;
+                case "20":
+                    return Lang.wallet_not_existed;
+                case "21":
+                    return Lang.wallet_not_active;
+                case "22":
+                    return Lang.younger_to_use;
+                case "23":
+                    return Lang.account_not_existed;
+                case "24":
+                    return Lang.internet_error;
+                case "25":
+                    return Lang.pin_wrong;
+                case "26":
+                    return Lang.in_blacklist;
+                case "30":
+                    return Lang.otp_timeout;
+                case "31":
+                    return Lang.otp_invalid;
+                case "100":
+                    return Lang.no_permission;
+                case "32":
+                    return Lang.not_enough_money_to_exchange;
+                case "33":
+                    return Lang.over_each_exchange;
+                case "34":
+                    return Lang.over_exchange_per_day;
+                case "38":
+                    return Lang.promotion_code_invalid;
+                case "39":
+                    return Lang.promotion_code_used;
+                case "40":
+                    return Lang.promotion_code_inactive;
+                case "41":
+                    return Lang.buying_code_not_existed;
+                default:
+                    return code + " " + Lang.not_defined;
+            }
+        }
+
+        public static string ConvertWalletTicket(string type)
+        {
+            switch (type)
+            {
+                case Constants.BASIC_WALLET_TICKET:
+                    return Lang.basic_account;
+                default:
+                    return Lang.NatCash;
+            }
+        }
+
+        // dateTime : MM/dd/yyyy
+        public static long getCountTimeToTimestamp(string time)
+        {
+            // convert to Datetime
+            DateTime endTime = DateTime.ParseExact(
+                time,
+                formats,
+                new CultureInfo("en-US"),
+                DateTimeStyles.None
+            );
+            TimeSpan elapsedTime = endTime - DateTime.Now;
+            return (long)elapsedTime.TotalSeconds;
+        }
+
+        protected void CreateAuthToken()
+        {
+            // create session authen
+            // Create the random value we will use to secure the session.
+            string authId = GenerateAuthId();
+
+            // Store the value in both our Session and a Cookie.
+            HttpContext.Session.SetString("AuthorizationCookieId", authId);
+            string sessionValue = HttpContext.Session.GetString("AuthorizationCookieId");
+            //CookieOptions option = new CookieOptions
+            //{
+            //    Expires = DateTime.Now.AddMinutes(1)
+            //};
+            //Response.Cookies.Append("Key Name", "Value", option);
+            CookieOptions options = new CookieOptions()
+            {
+                //Path = "/",
+                //HttpOnly = true,
+                //Secure = false,
+                //SameSite = SameSiteMode.None
+                Expires = DateTime.Now.AddMinutes(60)
+            };
+            HttpContext.Response.Cookies.Append("AuthorizationCookie", authId, options);
+            string cookieValue = HttpContext.Request.Cookies["AuthorizationCookie"];
+        }
+
+        protected bool CheckAuthToken()
+        {
+            //return true;
+            string cookieValue = HttpContext.Request.Cookies["AuthorizationCookie"];
+            string sessionValue = HttpContext.Session.GetString("AuthorizationCookieId");
+
+            if (cookieValue == null || sessionValue == null || cookieValue != sessionValue)
+            {
+                // Invalidate the session and log out the current user.
+                return false;
+                //return true;
+            }
+            //if (sessionValue == null)
+            //{
+            //    // Invalidate the session and log out the current user.
+            //    return false;
+            //}
+            else
+            {
+                return true;
+            }
+        }
+
+        protected bool ClearCache()
+        {
+            HttpContext.Session.Clear();
+            foreach (var cookieKey in HttpContext.Request.Cookies.Keys)
+            {
+                HttpContext.Response.Cookies.Delete(cookieKey);
+            }
+            return true;
+        }
+
+        private string GenerateAuthId()
+        {
+            using (RandomNumberGenerator rng = new RNGCryptoServiceProvider())
+            {
+                byte[] tokenData = new byte[32];
+                rng.GetBytes(tokenData);
+                return Convert.ToBase64String(tokenData);
+            }
+        }
+
+        protected String DecryptRSA(IConfiguration _configuration, String data)
+        {
+            RSACryptoServiceProvider rsaPrivate = new RSACryptoServiceProvider();
+            rsaPrivate.FromXmlFile(
+                Path.Combine(
+                    Directory.GetCurrentDirectory(),
+                    "",
+                    _configuration["rsaPrivateKeyXml"]
+                )
+            );
+            byte[] byteEntry = Convert.FromBase64String(data);
+            byte[] byteText = rsaPrivate.Decrypt(byteEntry, false);
+
+            return Encoding.UTF8.GetString(byteText);
+        }
+
+        protected async Task<string> CheckAutoLogin(ILog log, String uuid)
+        {
+            string res = null;
+            try
+            {
+                HttpClient httpClient = new HttpClient();
+                MultipartFormDataContent form = new MultipartFormDataContent();
+
+                form.Add(new StringContent(uuid), "uuid");
+
+                HttpResponseMessage response = await httpClient.PostAsync(
+                    Constants.URL_GET_MSISDN,
+                    form
+                );
+
+                response.EnsureSuccessStatusCode();
+                httpClient.Dispose();
+                res = response.Content.ReadAsStringAsync().Result;
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine(ex.Message);
+                log.Debug("Exp: " + ex);
+            }
+            return res;
+        }
+
+        public static string CreatePrivateURL(
+            IConfiguration _configuration,
+            string urlString,
+            string durationUnits,
+            string durationNumber,
+            string startIntervalFromNow,
+            string pathToPolicyStmnt
+        )
+        {
+            TimeSpan timeSpanInterval = GetDuration(durationUnits, durationNumber);
+            TimeSpan timeSpanToStart = GetDurationByUnits(durationUnits, startIntervalFromNow);
+            if (null == timeSpanToStart)
+                return "Invalid duration units. Valid options: seconds, minutes, hours, or days";
+
+            string strPolicy = urlString;
+
+            // Read the policy into a byte buffer.
+            byte[] bufferPolicy = Encoding.ASCII.GetBytes(strPolicy);
+
+            // Base64 encode URL-safe policy statement.
+            //string urlSafePolicy = ToUrlSafeBase64String(bufferPolicy);
+
+            // Initialize the SHA1CryptoServiceProvider object and hash the policy data.
+            byte[] bufferPolicyHash;
+            using (SHA1CryptoServiceProvider cryptoSHA1 = new SHA1CryptoServiceProvider())
+            {
+                bufferPolicyHash = cryptoSHA1.ComputeHash(bufferPolicy);
+
+                // Initialize the RSACryptoServiceProvider object.
+                RSACryptoServiceProvider providerRSA = new RSACryptoServiceProvider();
+                XmlDocument xmlPrivateKey = new XmlDocument();
+
+                // Load the PrivateKey.xml file generated by ConvertPEMtoXML.
+                xmlPrivateKey.Load(_configuration["rsaPrivateKeyXml"]);
+
+                // Format the RSACryptoServiceProvider providerRSA and create the signature.
+                providerRSA.FromXmlString(xmlPrivateKey.InnerXml);
+                RSAPKCS1SignatureFormatter RSAFormatter = new RSAPKCS1SignatureFormatter(
+                    providerRSA
+                );
+                RSAFormatter.SetHashAlgorithm("SHA1");
+                byte[] signedHash = RSAFormatter.CreateSignature(bufferPolicyHash);
+
+                // Convert the signed policy to URL safe base 64 encoding.
+                string strSignedPolicy = ToUrlSafeBase64String(signedHash);
+
+                return urlString + "&signature=" + strSignedPolicy;
+            }
+        }
+
+        public static string ToUrlSafeBase64String(byte[] bytes)
+        {
+            return System.Convert.ToBase64String(bytes);
+            //.Replace('+', '-')
+            //.Replace('=', '_')
+            //.Replace('/', '~');
+        }
+
+        public static string CreatePolicyStatement(
+            string policyStmnt,
+            string resourceUrl,
+            DateTime startTime,
+            DateTime endTime
+        )
+        {
+            // Create the policy statement.
+            FileStream streamPolicy = new FileStream(policyStmnt, FileMode.Open, FileAccess.Read);
+            using (StreamReader reader = new StreamReader(streamPolicy))
+            {
+                string strPolicy = reader.ReadToEnd();
+
+                TimeSpan startTimeSpanFromNow = (startTime - DateTime.Now);
+                TimeSpan endTimeSpanFromNow = (endTime - DateTime.Now);
+                TimeSpan intervalStart =
+                    (DateTime.UtcNow.Add(startTimeSpanFromNow))
+                    - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
+                TimeSpan intervalEnd =
+                    (DateTime.UtcNow.Add(endTimeSpanFromNow))
+                    - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
+
+                int startTimestamp = (int)intervalStart.TotalSeconds; // START_TIME
+                int endTimestamp = (int)intervalEnd.TotalSeconds; // END_TIME
+
+                if (startTimestamp > endTimestamp)
+                    return "Error!";
+
+                // Replace variables in the policy statement.
+                strPolicy = strPolicy.Replace("RESOURCE", resourceUrl);
+                //strPolicy = strPolicy.Replace("START_TIME", startTimestamp.ToString());
+                //strPolicy = strPolicy.Replace("END_TIME", endTimestamp.ToString());
+                //strPolicy = strPolicy.Replace("EXPIRES", endTimestamp.ToString());
+                return resourceUrl;
+            }
+        }
+
+        public static TimeSpan GetDuration(string units, string numUnits)
+        {
+            TimeSpan timeSpanInterval = new TimeSpan();
+            switch (units)
+            {
+                case "seconds":
+                    timeSpanInterval = new TimeSpan(0, 0, 0, int.Parse(numUnits));
+                    break;
+                case "minutes":
+                    timeSpanInterval = new TimeSpan(0, 0, int.Parse(numUnits), 0);
+                    break;
+                case "hours":
+                    timeSpanInterval = new TimeSpan(0, int.Parse(numUnits), 0, 0);
+                    break;
+                case "days":
+                    timeSpanInterval = new TimeSpan(int.Parse(numUnits), 0, 0, 0);
+                    break;
+                default:
+                    Console.WriteLine("Invalid time units; use seconds, minutes, hours, or days");
+                    break;
+            }
+            return timeSpanInterval;
+        }
+
+        private static TimeSpan GetDurationByUnits(
+            string durationUnits,
+            string startIntervalFromNow
+        )
+        {
+            TimeSpan timeSpanInterval = new TimeSpan();
+            switch (durationUnits)
+            {
+                case "seconds":
+                    timeSpanInterval = new TimeSpan(0, 0, int.Parse(startIntervalFromNow));
+                    break;
+                case "minutes":
+                    timeSpanInterval = new TimeSpan(0, int.Parse(startIntervalFromNow), 0);
+                    break;
+                case "hours":
+                    timeSpanInterval = new TimeSpan(int.Parse(startIntervalFromNow), 0, 0);
+                    break;
+                case "days":
+                    timeSpanInterval = new TimeSpan(int.Parse(startIntervalFromNow), 0, 0, 0);
+                    break;
+                default:
+                    timeSpanInterval = new TimeSpan(0, 0, 0, 0);
+                    break;
+            }
+            return timeSpanInterval;
+        }
+
+        public static string ConvertDrawnTimeFromTerm(string type, TermObj termObj)
+        {
+            string drawnTime = DateTime
+                .ParseExact(termObj.randomDate, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture)
+                .ToString("HH:mm");
+            string endTime = DateTime
+                .ParseExact(termObj.endDate, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture)
+                .ToString("HH:mm");
+
+            switch (type)
+            {
+                case Constants.NEW_YORK_BOLET_CODE:
+                    return drawnTime;
+                case Constants.NEW_YORK_MAYRAJ_CODE:
+                    return drawnTime;
+                case Constants.NEW_YORK_LOTTO3_CODE:
+                    return drawnTime;
+                case Constants.FLORIDA_BOLET_CODE:
+                    return drawnTime;
+                case Constants.FLORIDA_MAYRAJ_CODE:
+                    return drawnTime;
+                case Constants.FLORIDA_LOTTO3_CODE:
+                    return drawnTime;
+                case Constants.BOULCHANS_CODE:
+                    return endTime;
+                default:
+                    return Lang.new_york_lottery;
+            }
+        }
+
+        public static string ConvertDrawnTimeFromTicket(string type, Ticket ticket)
+        {
+            string drawnTime = DateTime
+                .ParseExact(
+                    ticket.termRandomDate,
+                    "dd/MM/yyyy HH:mm:ss",
+                    CultureInfo.InvariantCulture
+                )
+                .ToString("HH:mm");
+            string endTime = DateTime
+                .ParseExact(ticket.termEndDate, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture)
+                .ToString("HH:mm");
+
+            switch (type)
+            {
+                case Constants.NEW_YORK_BOLET_CODE:
+                    return drawnTime;
+                case Constants.NEW_YORK_MAYRAJ_CODE:
+                    return drawnTime;
+                case Constants.NEW_YORK_LOTTO3_CODE:
+                    return drawnTime;
+                case Constants.FLORIDA_BOLET_CODE:
+                    return drawnTime;
+                case Constants.FLORIDA_MAYRAJ_CODE:
+                    return drawnTime;
+                case Constants.FLORIDA_LOTTO3_CODE:
+                    return drawnTime;
+                case Constants.BOULCHANS_CODE:
+                    return endTime;
+                default:
+                    return Lang.new_york_lottery;
+            }
+        }
+    }
+}

+ 428 - 0
website/Controllers/BuyTicketController.cs

@@ -0,0 +1,428 @@
+using LotteryWebApp.Common;
+using LotteryWebApp.Components;
+using LotteryWebApp.Extensions;
+using LotteryWebApp.Languages;
+using LotteryWebApp.Models;
+using LotteryWebApp.Service;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Configuration;
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+
+namespace LotteryWebApp.Controllers
+{
+    [AutoValidateAntiforgeryToken]
+    public class BuyTicketController : BaseController
+    {
+        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
+
+        IConfiguration configuration;
+        private readonly IWebHostEnvironment webHostEnvironment;
+        APIFunctions api = new APIFunctions();
+
+        public BuyTicketController(IConfiguration _configuration, IWebHostEnvironment hostEnvironment)
+        {
+            configuration = _configuration;
+            webHostEnvironment = hostEnvironment;
+        }
+
+        public String GetParameter(String key)
+        {
+            return configuration.GetSection(key).Value;
+        }
+
+        public IActionResult Index(string termType)
+        {
+            if (!CheckAuthToken())
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+
+            HttpContext.Session.SetComplexData("navigator", Constants.BUY_TICKET_NAVIGATOR);
+
+            BuyTicket_ViewModel model = new BuyTicket_ViewModel();
+
+            model.termType = termType != null ? termType : Constants.FLORIDA_BOLET_CODE;
+            HttpContext.Session.SetComplexData("termType", model.termType);
+
+            return View(model);
+        }
+
+        [ValidateAntiForgeryToken]
+        public IActionResult LastTermResult(string termType, String seqPage)
+        {
+            if (!CheckAuthToken())
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+            LastTermResult_ViewModel model = new LastTermResult_ViewModel();
+            model.listTerm = new List<Term>();
+            try
+            {
+                String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+                String token = HttpContext.Session.GetComplexData<String>("token");
+
+                string fromDate = DateTime.Now.AddDays(-2).ToString("dd/MM/yyyy");
+                string toDate = DateTime.Now.ToString("dd/MM/yyyy");
+
+                if (seqPage == "1")
+                {
+                    HttpContext.Session.DeleteComplexData("listTerms");
+                }
+                // get result
+                ResultOfTermRequest resultOfTermRequest = new ResultOfTermRequest();
+                resultOfTermRequest.gameId = termType;
+                resultOfTermRequest.token = token;
+                resultOfTermRequest.type = Constants.TERM_HAS_NOT_RESULT_TYPE;
+                resultOfTermRequest.order = Constants.DECS;
+                resultOfTermRequest.fromDate = fromDate;
+                resultOfTermRequest.toDate = toDate;
+                resultOfTermRequest.rowsOnPage = Constants.ROW_ON_PAGE;
+                resultOfTermRequest.seqPage = seqPage;
+                resultOfTermRequest.id = Constants.ALL_DATA;
+
+                ResultOfTermResponse result = api.GetResultOfTermApi(configuration, resultOfTermRequest);
+                if (result.responseCode == Code.SESSION_EXPIRED)
+                {
+                    return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+                }
+                else if (result.responseCode == Code.SUCCESS)
+                {
+                    if (result.listTerm != null)
+                        model.listTermNotDrawn = result.listTerm;
+                    model.termType = termType;
+                }
+
+                resultOfTermRequest.type = Constants.TERM_HAS_RESULT_TYPE;
+                result = api.GetResultOfTermApi(configuration, resultOfTermRequest);
+                if (result.responseCode == Code.SESSION_EXPIRED)
+                {
+                    return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+                }
+                else if (result.responseCode == Code.SUCCESS)
+                {
+                    if (result.listTerm != null)
+                    {
+                        model.listTerm = result.listTerm;
+
+                        if (termType == Constants.BOULCHANS_CODE)
+                        {
+                            List<Term> listTerms = HttpContext.Session.GetComplexData<List<Term>>("listTerms");
+                            if (listTerms != null && listTerms.Count > 0)
+                            {
+                                listTerms.AddRange(result.listTerm);
+                            }
+                            else
+                            {
+                                listTerms = result.listTerm;
+                            }
+                            HttpContext.Session.SetComplexData("listTerms", listTerms);
+                        }
+                    }
+                }
+            }
+
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return PartialView("LastTermResult", model);
+        }
+
+        public IActionResult Choose(string ticketType, string termType)
+        {
+            if (!CheckAuthToken())
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+            BuyTicketChoose_ViewModel model = new BuyTicketChoose_ViewModel();
+            if (ticketType == null)
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Home");
+            }
+
+            if (termType != null)
+            {
+                HttpContext.Session.SetComplexData("termType", termType);
+            }
+            model.ticketType = ticketType;
+            return View(model);
+        }
+
+        [ValidateAntiForgeryToken]
+        public IActionResult AddTicket_Action(string ticketType)
+        {
+            ChooseFormModel model = new ChooseFormModel();
+            model.tics = DateTime.Now.Ticks;
+            model.ticketType = ticketType;
+            return ViewComponent("ChooseForm", model);
+        }
+
+
+        [ValidateAntiForgeryToken]
+        public JsonResult ConfirmTicket_Action(string ticketType, string tickets)
+        {
+            try
+            {
+                // check tickets
+                int check = 1;
+                string[] ticketsList = tickets.Split(',');
+                for (int i = 0; i < ticketsList.Length; i++)
+                {
+                    if (ticketType == Constants.BOLET_CODE && ticketsList[i].Length != 2)
+                    {
+                        check *= 0;
+                    }
+                    if (ticketType == Constants.MAYRAJ_CODE && ticketsList[i].Length != 4)
+                    {
+                        check *= 0;
+                    }
+                    if (ticketType == Constants.LOTTO3_CODE && ticketsList[i].Length != 3)
+                    {
+                        check *= 0;
+                    }
+                    if (ticketType == Constants.BOULCHANS_CODE && ticketsList[i].Length != 2)
+                    {
+                        check *= 0;
+                    }
+                }
+                if (check == 1)
+                {
+                    HttpContext.Session.SetComplexData("ticketType", ticketType);
+                    HttpContext.Session.SetComplexData("tickets", tickets);
+                    return Json(new
+                    {
+                        code = Code.SUCCESS,
+                    });
+                }
+
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return Json(new
+            {
+                code = Code.FAILURE,
+                message = Lang.ticket_invalid
+            });
+        }
+
+        public IActionResult Payment(string step)
+        {
+            if (!CheckAuthToken())
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+
+            BuyTicketPayment_ViewModel model = new BuyTicketPayment_ViewModel();
+            Profile profile = HttpContext.Session.GetComplexData<Profile>("profile");
+
+            String tickets = HttpContext.Session.GetComplexData<String>("tickets");
+            String ticketType = HttpContext.Session.GetComplexData<String>("ticketType");
+            String termType = HttpContext.Session.GetComplexData<String>("termType");
+
+            ConfirmTicketDataResponse confirmTicketDataResponse = HttpContext.Session.GetComplexData<ConfirmTicketDataResponse>("confirmTicketDataResponse");
+
+            model.tickets = tickets;
+            model.step = step != null ? step : Constants.PAYMENT_SHOW;
+            model.ticketType = ticketType;
+            model.confirmTicketDataResponse = confirmTicketDataResponse;
+            model.profile = profile;
+            model.termType = termType;
+
+            if (step == Constants.PAYMENT_RESULT)
+            {
+                ConfirmBuyingTicketResponse confirmBuyingTicketResponse = HttpContext.Session.GetComplexData<ConfirmBuyingTicketResponse>("confirmBuyingTicketResponse");
+                model.confirmBuyingTicketResponse = confirmBuyingTicketResponse;
+            }
+
+            return View(model);
+        }
+
+        [ValidateAntiForgeryToken]
+        public JsonResult PaymentSendOTP_Action(string ticketMoney)
+        {
+            try
+            {
+                String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+                String token = HttpContext.Session.GetComplexData<String>("token");
+                String termType = HttpContext.Session.GetComplexData<String>("termType");
+                String tickets = HttpContext.Session.GetComplexData<String>("tickets");
+                String ticketType = HttpContext.Session.GetComplexData<String>("ticketType");
+
+                string[] ticketMoneyReal = ticketMoney.Split(',');
+                string[] ticketNumberReal = tickets.Split(',');
+
+                if (ticketMoneyReal.Length != ticketNumberReal.Length)
+                {
+                    return Json(new
+                    {
+                        code = Code.FAILURE,
+                        message = Lang.error_happened
+                    });
+                }
+
+                int totalMoney = 0;
+                List<TicketInfo> ticketInfos = new List<TicketInfo>();
+                for (int i = 0; i < ticketMoneyReal.Length; i++)
+                {
+                    TicketInfo ticketInfo = new TicketInfo();
+                    ticketInfo.money = ticketMoneyReal[i];
+                    ticketInfo.code = ticketNumberReal[i];
+                    ticketInfos.Add(ticketInfo);
+                    totalMoney += int.Parse(ticketInfo.money);
+                }
+
+
+                ConfirmTicketDataRequest confirmTicketDataRequest = new ConfirmTicketDataRequest();
+                confirmTicketDataRequest.token = token;
+                confirmTicketDataRequest.msisdn = msisdn;
+                confirmTicketDataRequest.ticket = ticketInfos;
+                confirmTicketDataRequest.gameId = ConvertToGameID(termType, ticketType);
+                confirmTicketDataRequest.requestId = RandomString(100, true);
+
+                ConfirmTicketDataResponse confirmTicketDataResponse = api.ConfirmTicketDataApi(configuration, confirmTicketDataRequest);
+                if (confirmTicketDataResponse.responseCode == Code.SUCCESS)
+                {
+                    //string drawnTime = DateTime.ParseExact(confirmTicketDataResponse.termObj.endDate, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("HH:mm");
+
+                    string content = Lang.confirm_payment_1 + " " + totalMoney + " " + Lang.confirm_payment_2 + " " + ConvertGameIdToName(confirmTicketDataRequest.gameId)
+                       + " " + Lang.confirm_payment_3 + " 0 " + Lang.confirm_payment_4 + " " + 
+                       ConvertDrawnTimeFromTerm(termType, confirmTicketDataResponse.termObj) + Lang.confirm_payment_5;
+                    HttpContext.Session.SetComplexData("confirmTicketDataResponse", confirmTicketDataResponse);
+
+                    String channel = GetParameter(Constants.CHANNEL);
+                    if (channel == ApiConstants.WALLET)
+                    {
+                        // ma hoa
+                        String param = "transactionId=" + confirmTicketDataResponse.transId + "&requestId=" + confirmTicketDataResponse.requestId + "&money=" + totalMoney;
+                        String url = CreatePrivateURL(configuration, param, "seconds", "0", "0", GetParameter("rsaPolicy"));
+
+                        // redirect
+                        return Json(new
+                        {
+                            code = "110",
+                            param = url,
+                        });
+                    }
+                    else
+                    {
+                        // send OTP
+                        SendOTPRequest sendOTPRequest = new SendOTPRequest();
+                        sendOTPRequest.msisdn = msisdn;
+                        sendOTPRequest.token = token;
+                        SendOTPResponse sendOTPResponse = api.SendOTPApi(configuration, sendOTPRequest);
+                        return Json(new
+                        {
+                            code = int.Parse(sendOTPResponse.responseCode),
+                            message = sendOTPResponse.responseMessage,
+                            content = content,
+                        });
+                    }
+                }
+                return Json(new
+                {
+                    code = int.Parse(confirmTicketDataResponse.responseCode),
+                    message = GetLangFromCode(confirmTicketDataResponse.responseCode),
+                });
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return Json(new
+            {
+                code = Code.FAILURE,
+                message = Lang.error_happened
+            });
+        }
+
+        [ValidateAntiForgeryToken]
+        public JsonResult PaymentConfirmOTP_Action(string otp)
+        {
+            try
+            {
+                String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+                String token = HttpContext.Session.GetComplexData<String>("token");
+                ConfirmTicketDataResponse confirmTicketDataResponse = HttpContext.Session.GetComplexData<ConfirmTicketDataResponse>("confirmTicketDataResponse");
+
+                ConfirmOTPRequest confirmOTPRequest = new ConfirmOTPRequest();
+                confirmOTPRequest.otp = otp;
+                confirmOTPRequest.token = token;
+                confirmOTPRequest.msisdn = msisdn;
+
+                ConfirmOTPResponse confirmOTPResponse = api.ConfirmOTPApi(configuration, confirmOTPRequest);
+                if (confirmOTPResponse.responseCode == Code.SUCCESS)
+                {
+                    // confirm ticket
+
+                    ConfirmBuyingTicketRequest confirmBuyingTicketRequest = new ConfirmBuyingTicketRequest();
+                    confirmBuyingTicketRequest.requestId = confirmTicketDataResponse.requestId;
+                    confirmBuyingTicketRequest.transIdByTicket = confirmTicketDataResponse.transId;
+                    confirmBuyingTicketRequest.token = token;
+
+                    ConfirmBuyingTicketResponse confirmBuyingTicketResponse = api.ConfirmBuyingTicketApi(configuration, confirmBuyingTicketRequest);
+                    HttpContext.Session.SetComplexData("confirmBuyingTicketResponse", confirmBuyingTicketResponse);
+
+                    return Json(new
+                    {
+                        code = int.Parse(confirmBuyingTicketResponse.responseCode),
+                        message = confirmBuyingTicketResponse.responseMessage,
+                    });
+                }
+                return Json(new
+                {
+                    code = int.Parse(confirmOTPResponse.responseCode),
+                    message = GetLangFromCode(confirmOTPResponse.responseCode),
+                });
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return Json(new
+            {
+                code = Code.FAILURE,
+                message = Lang.error_happened
+            });
+        }
+
+        [AutoValidateAntiforgeryToken]
+        public JsonResult PaymentResentOTP_Action()
+        {
+            try
+            {
+                String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+                String token = HttpContext.Session.GetComplexData<String>("token");
+
+                // send OTP
+                SendOTPRequest sendOTPRequest = new SendOTPRequest();
+                sendOTPRequest.msisdn = msisdn;
+                sendOTPRequest.token = token;
+                SendOTPResponse sendOTPResponse = api.SendOTPApi(configuration, sendOTPRequest);
+                return Json(new
+                {
+                    code = int.Parse(sendOTPResponse.responseCode),
+                    message = GetLangFromCode(sendOTPResponse.responseCode),
+                });
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return Json(new
+            {
+                code = Code.FAILURE,
+                message = Lang.error_happened
+            });
+        }
+
+        public IActionResult BackToApp()
+        {
+            return View();
+        }
+    }
+}

+ 150 - 0
website/Controllers/HistoryController.cs

@@ -0,0 +1,150 @@
+using LotteryWebApp.Common;
+using LotteryWebApp.Extensions;
+using LotteryWebApp.Models;
+using LotteryWebApp.Service;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Configuration;
+using System;
+using System.Collections.Generic;
+
+namespace LotteryWebApp.Controllers
+{
+    [AutoValidateAntiforgeryToken]
+    public class HistoryController : BaseController
+    {
+        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
+
+        IConfiguration configuration;
+        private readonly IWebHostEnvironment webHostEnvironment;
+        APIFunctions api = new APIFunctions();
+
+        public HistoryController(IConfiguration _configuration, IWebHostEnvironment hostEnvironment)
+        {
+            configuration = _configuration;
+            webHostEnvironment = hostEnvironment;
+        }
+
+        public String GetParameter(String key)
+        {
+            return configuration.GetSection(key).Value;
+        }
+
+        public IActionResult Index(string winType, string gameId)
+        {
+            if (!CheckAuthToken())
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+            HttpContext.Session.SetComplexData("navigator", Constants.HISTORY_NAVIGATOR);
+
+            History_ViewModel model = new History_ViewModel();
+            try
+            {
+                String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+                String token = HttpContext.Session.GetComplexData<String>("token");
+
+                model.gameId = gameId != null ? gameId : Constants.NEW_YORK_BOLET_CODE;
+                model.winType = winType != null ? winType : Constants.NOT_DRAW_CODE;
+
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return View(model);
+        }
+
+        [ValidateAntiForgeryToken]
+        public IActionResult UserTicket(string winType, string gameId, string seqpage)
+        {
+            if (!CheckAuthToken())
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+            HistoryUserTicket_ViewModel model = new HistoryUserTicket_ViewModel();
+            model.tickets = new List<Ticket>();
+            try
+            {
+                String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+                String token = HttpContext.Session.GetComplexData<String>("token");
+
+                model.gameId = gameId != null ? gameId : Constants.NEW_YORK_BOLET_CODE;
+                model.winType = winType != null ? winType : Constants.NOT_DRAW_CODE;
+
+                HttpContext.Session.SetComplexData("gameId", model.gameId);
+
+                UserTicketRequest userTicketRequest = new UserTicketRequest();
+                userTicketRequest.msisdn = msisdn;
+                userTicketRequest.token = token;
+                userTicketRequest.gameId = ConvertToListGameID(model.gameId);
+                userTicketRequest.type = model.winType;
+                userTicketRequest.id = Constants.ALL_DATA;
+                userTicketRequest.rowsOnPage = Constants.ROW_ON_PAGE;
+                userTicketRequest.seqPage = seqpage != null ? seqpage : "1";
+                userTicketRequest.order = Constants.DECS;
+
+                UserTicketResponse userTicketResponse = api.GetUserTicketApi(configuration, userTicketRequest);
+                if (userTicketResponse.responseCode == Code.SUCCESS)
+                {
+                    if (userTicketResponse.listTicket != null)
+                    {
+                        model.tickets = userTicketResponse.listTicket;
+
+                        // append 
+                        List<Ticket> listTickets = HttpContext.Session.GetComplexData<List<Ticket>>("listTicket");
+                        if(listTickets != null && listTickets.Count > 0)
+                        {
+                            listTickets.AddRange(userTicketResponse.listTicket);
+                        }
+                        else
+                        {
+                            listTickets = userTicketResponse.listTicket;
+                        }
+                        HttpContext.Session.SetComplexData("listTicket", listTickets);
+
+                        HttpContext.Session.SetComplexData("winType", model.winType);
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return PartialView("UserTicket", model);
+        }
+
+        [ValidateAntiForgeryToken]
+        public IActionResult TicketDetail(string id)
+        {
+            if (!CheckAuthToken())
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+            HistoryTicketDetail_ViewModel model = new HistoryTicketDetail_ViewModel();
+            try
+            {
+                String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+                String token = HttpContext.Session.GetComplexData<String>("token");
+                String winType = HttpContext.Session.GetComplexData<String>("winType");
+                String gameId = HttpContext.Session.GetComplexData<String>("gameId");
+
+                List<Ticket> tickets = HttpContext.Session.GetComplexData<List<Ticket>>("listTicket");
+
+                Ticket ticket = tickets.Find(c => c.id == id);
+                if (ticket != null)
+                {
+                    model.ticket = ticket;
+                }
+                model.winType = winType;
+                model.msisdn = msisdn;
+                model.type = gameId;
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return PartialView("TicketDetail", model);
+        }
+    }
+}

+ 802 - 0
website/Controllers/HomeController.cs

@@ -0,0 +1,802 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Globalization;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using LotteryWebApp.Common;
+using LotteryWebApp.Extensions;
+using LotteryWebApp.Languages;
+using LotteryWebApp.Models;
+using LotteryWebApp.Service;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Localization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Logging;
+using Newtonsoft.Json;
+
+namespace LotteryWebApp.Controllers
+{
+    [AutoValidateAntiforgeryToken]
+    public class HomeController : BaseController
+    {
+        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
+
+        IConfiguration configuration;
+        private readonly IWebHostEnvironment webHostEnvironment;
+        APIFunctions api = new APIFunctions();
+        bool flashViewEnabled = false;
+
+        public HomeController(IConfiguration _configuration, IWebHostEnvironment hostEnvironment)
+        {
+            configuration = _configuration;
+            webHostEnvironment = hostEnvironment;
+        }
+
+        public String GetParameter(String key)
+        {
+            return configuration.GetSection(key).Value;
+        }
+
+        public IActionResult FlashView()
+        {
+            return View();
+        }
+
+        public JsonResult SetCulture(string lang)
+        {
+            try
+            {
+                Response.Cookies.Append(
+                    CookieRequestCultureProvider.DefaultCookieName,
+                    CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(lang)),
+                    new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
+                );
+                HttpContext.Session.SetComplexData("culture", lang);
+            }
+            catch (Exception ex)
+            {
+                log.Error("Exp: " + ex);
+            }
+
+            return Json(new { });
+        }
+
+        public async Task<IActionResult> IndexAsync(
+            string termType,
+            String uuid,
+            String mcuid,
+            String phonenumber,
+            String token
+        )
+        {
+            //return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Home/Update");
+            //String param = "transactionId=" + "ABC" + "&requestId=" + "DEF" + "&money=" + "100";
+            //String url = CreatePrivateURL(configuration, param, "seconds", "0", "0", GetParameter("rsaPolicy"));
+
+
+            HomeIndex_ViewModel model = new HomeIndex_ViewModel();
+            try
+            {
+                HttpContext.Session.SetComplexData("navigator", Constants.HOME_NAVIGATOR);
+
+                CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture;
+                String lang = currentCulture.Name;
+                log.Info("lang: " + lang);
+
+                String msisdnAuto = null;
+                // check auto login ?uuid=681471d23b83f0a463e2dd5671ea0fc5
+                // ?uuid=681471d23b83f0a463e2dd5671ea0fc5&mcuid=6c6948a89908d83aec8c05be256970a1&mcapp=mocha
+
+                if (!CheckAuthToken())
+                {
+                    //String uri = HttpContext.Request.QueryString.ToUriComponent().ToString();
+                    log.Info("UUID: " + uuid);
+                    log.Info("token: " + token);
+                    //token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ1c2VySW5mb3IiLCJleHAiOjE3MTAzODE0NTksInV1aWQiOiI1MGEwYjNlNzk5ZjllZDU3YTE1ZjZjNjljODVmYTM3NSJ9.EgR-P_KzsHJ1XCdgeu25Gy_-qAHOfM9uv9RTZSvr0AA";
+
+                    if (token != null)
+                    {
+                        // nhan dien qua token
+                        AutoLoginRequest autoLoginRequest = new AutoLoginRequest();
+                        autoLoginRequest.token = token;
+                        AutoLoginResponse autoLoginResponse = await api.AutoLoginApiAsync(
+                            configuration,
+                            autoLoginRequest
+                        );
+
+                        if (autoLoginResponse.code == Code.SUCCESS_CODE)
+                        {
+                            string msisdnReal = validateMsisdn(
+                                autoLoginResponse.data.msisdn.Substring(1)
+                            );
+                            if (msisdnReal == "")
+                            {
+                                return Redirect(
+                                    GetParameter(Constants.SUB_DOMAIN) + "/Account/Login"
+                                );
+                            }
+                            // check local system
+                            CheckAccountRequest checkAccountRequest = new CheckAccountRequest
+                            {
+                                msisdn = msisdnReal,
+                                channel = Constants.WEB_CHANNEL,
+                                language = lang == "en" ? "0" : "1"
+                            };
+                            CheckAccountResponse checkAccountResponse = api.CheckAccountApi(
+                                configuration,
+                                checkAccountRequest
+                            );
+                            if (checkAccountResponse.status == Code.SUCCESS)
+                            {
+                                string tokenGetReal = checkAccountResponse.token;
+
+                                HttpContext.Session.SetComplexData("msisdn", msisdnReal);
+                                // create session
+                                // create new auth
+                                CreateAuthToken();
+
+                                HttpContext.Session.SetComplexData("token", tokenGetReal);
+
+                                // load user status
+                                UserGetProfileRequest userGetProfileRequest =
+                                    new UserGetProfileRequest
+                                    {
+                                        users = msisdnReal,
+                                        token = tokenGetReal
+                                    };
+                                Profile profileGet = api.UserLoadProfileApi(
+                                    configuration,
+                                    userGetProfileRequest
+                                );
+                                HttpContext.Session.SetComplexData("profile", profileGet);
+
+                                // load profile
+                                UserStatusRequest userStatusRequest = new UserStatusRequest
+                                {
+                                    users = msisdnReal,
+                                    token = tokenGetReal
+                                };
+                                UserStatus userStatusGet = api.GetUserStatusApi(
+                                    configuration,
+                                    userStatusRequest
+                                );
+                                HttpContext.Session.SetComplexData("userStatus", userStatusGet);
+                            }
+                            else
+                            {
+                                return Redirect(
+                                    GetParameter(Constants.SUB_DOMAIN) + "/Account/Login"
+                                );
+                            }
+                        }
+                    }
+                    else if (uuid != null)
+                    {
+                        // nhan dien thue bao
+                        //string uuid = HttpContext.Request.QueryString.ToUriComponent().ToString().Substring(6);
+                        //String uuid = data.Substring(data.Length - 5, data.Length);
+
+                        String res = await CheckAutoLogin(log, uuid);
+                        log.Info("uuid: " + uuid + " res: " + res);
+
+                        if (res != null)
+                        {
+                            dynamic json = JsonConvert.DeserializeObject(res);
+                            log.Info("res json: " + json);
+
+                            String code = json["code"];
+
+                            if (code == "200")
+                            {
+                                String errorCode = json["errorCode"];
+
+                                if (errorCode == "200")
+                                {
+                                    msisdnAuto = json["data"]["msisdn"];
+                                    log.Info("msisdnAuto: " + msisdnAuto);
+                                }
+                            }
+                        }
+
+                        // redirect to OTP screen
+                        String msisdnDetect = validateMsisdn(msisdnAuto.Substring(1));
+                        if (msisdnDetect != "")
+                        {
+                            // get OTP
+                            RegisterRequest request = new RegisterRequest();
+                            request.Msisdn = msisdnDetect;
+                            RegisterResponse reset = api.UserForgotPasswordApi(
+                                configuration,
+                                request
+                            );
+                            if (reset.status == Code.SUCCESS)
+                            {
+                                HttpContext.Session.Remove("regInfos");
+                                HttpContext.Session.SetComplexData("msisdn", msisdnDetect);
+
+                                // return to login
+                                return Redirect(
+                                    GetParameter(Constants.SUB_DOMAIN) + "/Account/Login?step=2"
+                                );
+                            }
+                        }
+
+                        // return to view to get phone number
+                        model.termType =
+                            termType != null ? termType : Constants.NEW_YORK_BOLET_CODE;
+
+                        //model.uuid = uuid;
+                        //model.subDomain = GetParameter(Constants.SUB_DOMAIN);
+
+                        return Redirect(
+                            GetParameter(Constants.SUB_DOMAIN)
+                                + "/Account/Login?message="
+                                + Lang.reset_after_1_minute
+                        );
+                    }
+                    else if (phonenumber != null)
+                    {
+                        String channel = GetParameter(Constants.CHANNEL);
+                        if (channel == ApiConstants.WALLET)
+                        {
+                            //giai ma
+                            String msisdnRSA = DecryptRSA(configuration, phonenumber);
+
+                            // login
+                            HttpContext.Session.SetComplexData("msisdn", msisdnRSA);
+                            // create session
+                            // create new auth
+                            CreateAuthToken();
+
+                            // login success --> store session
+                            HttpContext.Session.SetComplexData("token", ApiConstants.WALLET_TOKEN);
+
+                            // load profile
+
+                            // load user status
+                            UserGetProfileRequest userGetProfileRequest = new UserGetProfileRequest
+                            {
+                                users = msisdnRSA,
+                                token = ApiConstants.WALLET_TOKEN
+                            };
+                            Profile profileGet = api.UserLoadProfileApi(
+                                configuration,
+                                userGetProfileRequest
+                            );
+                            HttpContext.Session.SetComplexData("profile", profileGet);
+
+                            // load profile
+                            UserStatusRequest userStatusRequest = new UserStatusRequest
+                            {
+                                users = msisdnRSA,
+                                token = ApiConstants.WALLET_TOKEN
+                            };
+                            UserStatus userStatusGet = api.GetUserStatusApi(
+                                configuration,
+                                userStatusRequest
+                            );
+                            HttpContext.Session.SetComplexData("userStatus", userStatusGet);
+                        }
+                        else
+                        {
+                            // after auto detect
+                            String msisdnGet = phonenumber.Substring(1);
+                            String msisdnDetect = validateMsisdn(msisdnGet);
+                            if (msisdnDetect != "")
+                            {
+                                // auto login
+                                // reload user info
+                                HttpContext.Session.Remove("regInfos");
+                                HttpContext.Session.SetComplexData("msisdn", msisdnDetect);
+
+                                // return to login
+                                return Redirect(
+                                    GetParameter(Constants.SUB_DOMAIN) + "/Account/Login?step=2"
+                                );
+                            }
+                            return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+                        }
+                    }
+                    else
+                    {
+                        return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+                    }
+                }
+
+                Profile profile = HttpContext.Session.GetComplexData<Profile>("profile");
+                UserStatus userStatus = HttpContext.Session.GetComplexData<UserStatus>(
+                    "userStatus"
+                );
+
+                // login success --> store session
+                model.termType = termType != null ? termType : Constants.FLORIDA_BOLET_CODE;
+                model.userStatus = userStatus;
+                model.profile = profile;
+
+                // get time to nearest term
+                model.listTerm = new List<Term>();
+
+                String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+                String tokenGet = HttpContext.Session.GetComplexData<String>("token");
+                String fromDate = DateTime.Now.AddDays(-2).ToString("dd/MM/yyyy");
+                String toDate = DateTime.Now.ToString("dd/MM/yyyy");
+
+                // get winner
+
+                GetTopWinnerRequest getTopWinnerRequest = new GetTopWinnerRequest();
+                getTopWinnerRequest.type = lang == "en" ? "0" : "1";
+                getTopWinnerRequest.token = tokenGet;
+                GetTopWininerResponse getTopWininerResponse = api.GetTopWinnerApi(
+                    configuration,
+                    getTopWinnerRequest
+                );
+                if (getTopWininerResponse.responseCode == Code.SUCCESS)
+                {
+                    model.topWinner = getTopWininerResponse.list;
+                    HttpContext.Session.SetComplexData("topWinner", model.topWinner);
+                }
+
+                ResultOfTermRequest resultOfTermRequest = new ResultOfTermRequest
+                {
+                    gameId = model.termType,
+                    token = tokenGet,
+                    type = Constants.TERM_HAS_NOT_RESULT_TYPE,
+                    order = Constants.DECS,
+                    fromDate = fromDate,
+                    toDate = toDate,
+                    rowsOnPage = Constants.ROW_ON_PAGE,
+                    seqPage = "1",
+                    id = Constants.ALL_DATA
+                };
+
+                ResultOfTermResponse result = api.GetResultOfTermApi(
+                    configuration,
+                    resultOfTermRequest
+                );
+                if (result.responseCode == Code.SESSION_EXPIRED)
+                {
+                    return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+                }
+                else if (result.responseCode == Code.SUCCESS)
+                {
+                    model.listTerm = result.listTerm;
+                }
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+            return View(model);
+        }
+
+        [ValidateAntiForgeryToken]
+        public IActionResult TermResult(string termType)
+        {
+            if (!CheckAuthToken())
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+            TermResultModel model = new TermResultModel();
+            model.listTerm = new List<Term>();
+
+            String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+            String token = HttpContext.Session.GetComplexData<String>("token");
+
+            String fromDate = DateTime.Now.AddDays(-2).ToString("dd/MM/yyyy");
+            String toDate = DateTime.Now.ToString("dd/MM/yyyy");
+
+            // get result
+            ResultOfTermRequest resultOfTermRequest = new ResultOfTermRequest
+            {
+                gameId = termType,
+                token = token,
+                type = Constants.TERM_HAS_RESULT_TYPE,
+                order = Constants.DECS,
+                fromDate = fromDate,
+                toDate = toDate,
+                rowsOnPage = Constants.ROW_ON_PAGE,
+                seqPage = "1",
+                id = Constants.ALL_DATA
+            };
+
+            ResultOfTermResponse result = api.GetResultOfTermApi(
+                configuration,
+                resultOfTermRequest
+            );
+            if (result.responseCode == Code.SESSION_EXPIRED)
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+            else if (result.responseCode == Code.SUCCESS)
+            {
+                if (result.listTerm != null)
+                    model.listTerm = result.listTerm;
+                model.termType = termType;
+            }
+
+            return PartialView("TermResult", model);
+        }
+
+        public IActionResult Transfer(string step, string walletType)
+        {
+            if (!CheckAuthToken())
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+            HomeTransfer_ViewModel model = new HomeTransfer_ViewModel();
+            try
+            {
+                String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+                String token = HttpContext.Session.GetComplexData<String>("token");
+
+                Profile profile = HttpContext.Session.GetComplexData<Profile>("profile");
+                UserStatus userStatus = HttpContext.Session.GetComplexData<UserStatus>(
+                    "userStatus"
+                );
+                TransferMoneyRequest transferData =
+                    HttpContext.Session.GetComplexData<TransferMoneyRequest>("transferData");
+
+                model.step = step != null ? step : Constants.TRANSFER_SHOW;
+                model.walletType =
+                    walletType != null ? walletType : Constants.BASIC_WALLET_TRANSFER;
+
+                model.profile = profile;
+                model.userStatus = userStatus;
+                model.transferData = transferData;
+
+                if (step == Constants.TRANSFER_RESULT)
+                {
+                    // get payment info
+                    String paymentCode = HttpContext.Session.GetComplexData<String>("paymentCode");
+
+                    TransactionInfoRequest transactionInfoRequest = new TransactionInfoRequest
+                    {
+                        id = paymentCode,
+                        msisdn = msisdn,
+                        token = token
+                    };
+                    TransactionInfoResponse transactionInfoResponse = api.GetTransactionInfoApi(
+                        configuration,
+                        transactionInfoRequest
+                    );
+                    if (transactionInfoResponse.responseCode == Code.SESSION_EXPIRED)
+                    {
+                        return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+                    }
+                    else if (transactionInfoResponse.responseCode == Code.SUCCESS)
+                    {
+                        TransferMoneyRequest transferMoneyRequest =
+                            HttpContext.Session.GetComplexData<TransferMoneyRequest>(
+                                "transferData"
+                            );
+                        model.walletType = transferMoneyRequest.channelPayment;
+                        if (transactionInfoResponse.list.Count > 0)
+                        {
+                            model.transaction = transactionInfoResponse.list[0];
+                        }
+                        else
+                        {
+                            return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Home/Error");
+                        }
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return View(model);
+        }
+
+        [ValidateAntiForgeryToken]
+        public IActionResult TransactionConfirm_Action(
+            string walletType,
+            string receivernumber,
+            string moneyon
+        )
+        {
+            try
+            {
+                if (!CheckAuthToken())
+                {
+                    return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+                }
+                // send otp to user and show otp partial
+                String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+                String token = HttpContext.Session.GetComplexData<String>("token");
+
+                //String receiver = walletType == Constants.NATCASH_WALLET_TRANSFER ? null : msisdn;
+                String receiver = msisdn;
+
+                //if (walletType == Constants.NATCASH_WALLET_TRANSFER)
+                //{
+                //    receiver = validateMsisdn(receivernumber);
+                //    if (receiver == "")
+                //    {
+                //        return Json(new
+                //        {
+                //            code = Code.FAILURE,
+                //            message = Lang.phone_invalid
+                //        });
+                //    }
+                //}
+
+                // save info to session
+                TransferMoneyRequest transferMoneyRequest = new TransferMoneyRequest();
+                transferMoneyRequest.money = moneyon;
+                transferMoneyRequest.msisdn = msisdn;
+                transferMoneyRequest.msisdnReceive = receiver;
+                transferMoneyRequest.channelPayment = walletType;
+                HttpContext.Session.SetComplexData("transferData", transferMoneyRequest);
+                return Json(new { code = Code.SUCCESS, });
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return Json(new { code = Code.FAILURE, message = Lang.error_happened });
+        }
+
+        [ValidateAntiForgeryToken]
+        public JsonResult TransactionSendOTP_Action()
+        {
+            try
+            {
+                String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+                String token = HttpContext.Session.GetComplexData<String>("token");
+                TransferMoneyRequest transferData =
+                    HttpContext.Session.GetComplexData<TransferMoneyRequest>("transferData");
+
+                String content =
+                    Lang.confirm_transfer_1
+                    + " "
+                    + transferData.money
+                    + Lang.confirm_transfer_2
+                    + " "
+                    + transferData.msisdnReceive
+                    + Lang.confirm_transfer_3;
+
+                // send OTP
+                SendOTPRequest sendOTPRequest = new SendOTPRequest();
+                sendOTPRequest.msisdn = msisdn;
+                sendOTPRequest.token = token;
+                SendOTPResponse sendOTPResponse = api.SendOTPApi(configuration, sendOTPRequest);
+                return Json(
+                    new
+                    {
+                        code = int.Parse(sendOTPResponse.responseCode),
+                        message = GetLangFromCode(sendOTPResponse.responseCode),
+                        content = content,
+                    }
+                );
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return Json(new { code = Code.FAILURE, message = Lang.error_happened });
+        }
+
+        [ValidateAntiForgeryToken]
+        public JsonResult TransactionResentOTP_Action()
+        {
+            try
+            {
+                String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+                String token = HttpContext.Session.GetComplexData<String>("token");
+
+                // send OTP
+                SendOTPRequest sendOTPRequest = new SendOTPRequest
+                {
+                    msisdn = msisdn,
+                    token = token
+                };
+                SendOTPResponse sendOTPResponse = api.SendOTPApi(configuration, sendOTPRequest);
+                return Json(
+                    new
+                    {
+                        code = int.Parse(sendOTPResponse.responseCode),
+                        message = GetLangFromCode(sendOTPResponse.responseCode),
+                    }
+                );
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return Json(new { code = Code.FAILURE, message = Lang.error_happened });
+        }
+
+        [ValidateAntiForgeryToken]
+        public JsonResult TransactionConfirmOTP_Action(string otp)
+        {
+            try
+            {
+                String token = HttpContext.Session.GetComplexData<String>("token");
+                String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+
+                TransferMoneyRequest transferMoneyRequest =
+                    HttpContext.Session.GetComplexData<TransferMoneyRequest>("transferData");
+                transferMoneyRequest.otp = otp;
+                transferMoneyRequest.token = token;
+
+                TransferMoneyResponse transferMoneyResponse = api.TransferMoneyApi(
+                    configuration,
+                    transferMoneyRequest
+                );
+                if (transferMoneyResponse.responseCode == Code.SUCCESS)
+                {
+                    // save payment code
+                    //HttpContext.Session.DeleteComplexData("transferData");
+                    HttpContext.Session.SetComplexData(
+                        "paymentCode",
+                        transferMoneyResponse.paymentCode
+                    );
+
+                    // load user status
+                    UserGetProfileRequest userGetProfileRequest = new UserGetProfileRequest
+                    {
+                        users = msisdn,
+                        token = token
+                    };
+                    Profile profile = api.UserLoadProfileApi(configuration, userGetProfileRequest);
+                    HttpContext.Session.SetComplexData("profile", profile);
+
+                    // load profile
+                    UserStatusRequest userStatusRequest = new UserStatusRequest
+                    {
+                        users = msisdn,
+                        token = token
+                    };
+                    UserStatus userStatus = api.GetUserStatusApi(configuration, userStatusRequest);
+                    HttpContext.Session.SetComplexData("userStatus", userStatus);
+                }
+                return Json(
+                    new
+                    {
+                        code = int.Parse(transferMoneyResponse.responseCode),
+                        message = GetLangFromCode(transferMoneyResponse.responseCode),
+                    }
+                );
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return Json(new { code = Code.FAILURE, message = Lang.error_happened });
+        }
+
+        public IActionResult Rules(string termType)
+        {
+            if (!CheckAuthToken())
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+            HomeRules_ViewModel model = new HomeRules_ViewModel();
+            try
+            {
+                model.termType = termType != null ? termType : Constants.FLORIDA_BOLET_CODE;
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return View(model);
+        }
+
+        public IActionResult Results(string termType, string fromDate, string toDate)
+        {
+            if (!CheckAuthToken())
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+            HomeResults_ViewModel model = new HomeResults_ViewModel();
+            try
+            {
+                model.termType = termType != null ? termType : Constants.NEW_YORK_BOLET_CODE;
+                model.fromDate =
+                    fromDate != null ? fromDate : DateTime.Now.AddDays(-2).ToString("dd/MM/yyyy");
+                model.toDate = toDate != null ? toDate : DateTime.Now.ToString("dd/MM/yyyy");
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return View(model);
+        }
+
+        public IActionResult TermResultHistory(string termType, string fromDate, string toDate)
+        {
+            TermResultHistoryModel model = new TermResultHistoryModel();
+            if (!CheckAuthToken())
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+            try
+            {
+                String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+                String token = HttpContext.Session.GetComplexData<String>("token");
+
+                model.fromDate =
+                    fromDate != null
+                        ? DateTime
+                            .ParseExact(fromDate, "yyyy-MM-dd", CultureInfo.InvariantCulture)
+                            .ToString("dd/MM/yyyy")
+                        : DateTime.Now.AddDays(-2).ToString("dd/MM/yyyy");
+                model.toDate =
+                    toDate != null
+                        ? DateTime
+                            .ParseExact(toDate, "yyyy-MM-dd", CultureInfo.InvariantCulture)
+                            .ToString("dd/MM/yyyy")
+                        : DateTime.Now.ToString("dd/MM/yyyy");
+
+                // get result
+                ResultOfTermRequest resultOfTermRequest = new ResultOfTermRequest();
+                resultOfTermRequest.gameId = termType;
+                resultOfTermRequest.token = token;
+                resultOfTermRequest.type = Constants.TERM_HAS_RESULT_TYPE;
+                resultOfTermRequest.order = Constants.DECS;
+                resultOfTermRequest.fromDate = model.fromDate;
+                resultOfTermRequest.toDate = model.toDate;
+                resultOfTermRequest.rowsOnPage = Constants.ROW_ON_PAGE;
+                resultOfTermRequest.seqPage = "1";
+                resultOfTermRequest.id = Constants.ALL_DATA;
+
+                ResultOfTermResponse result = api.GetResultOfTermApi(
+                    configuration,
+                    resultOfTermRequest
+                );
+                if (result.responseCode == Code.SESSION_EXPIRED)
+                {
+                    return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+                }
+                else if (result.responseCode == Code.SUCCESS)
+                {
+                    model.listTerm = result.listTerm != null ? result.listTerm : new List<Term>();
+                    model.termType = termType;
+                }
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return PartialView("TermResultHistory", model);
+        }
+
+        public IActionResult Privacy()
+        {
+            return View();
+        }
+
+        public IActionResult Update()
+        {
+            return View();
+        }
+
+        public IActionResult FAQ()
+        {
+            if (!CheckAuthToken())
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+            HomeFAQ_ViewModel model = new HomeFAQ_ViewModel();
+            return View("FAQ", model);
+        }
+
+        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
+        public IActionResult Error()
+        {
+            return View(
+                new ErrorViewModel
+                {
+                    RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier
+                }
+            );
+        }
+    }
+}

+ 29 - 0
website/Controllers/PartialController.cs

@@ -0,0 +1,29 @@
+using LotteryWebApp.Models;
+using Microsoft.AspNetCore.Mvc;
+
+namespace LotteryWebApp.Controllers
+{
+    public class PartialController : Controller
+    {
+        public IActionResult Inform(string message)
+        {
+            PartialInform_ViewModel model = new PartialInform_ViewModel();
+            model.message = message;
+            return PartialView("Inform", model);
+        }
+
+        public IActionResult OTP(string content, string confirmFunc, string resentFunc, string cancelFunc)
+        {
+            PartialTransaction_ViewModel model = new PartialTransaction_ViewModel();
+            model.content = content;
+            model.confirmFunc = confirmFunc;
+            model.resentFunc = resentFunc;
+            model.cancelFunc = cancelFunc;
+            return PartialView("OTP", model);
+        }
+        public IActionResult Language()
+        {
+            return PartialView("Language");
+        }
+    }
+}

+ 231 - 0
website/Controllers/ProfileController.cs

@@ -0,0 +1,231 @@
+using LotteryWebApp.Common;
+using LotteryWebApp.Extensions;
+using LotteryWebApp.Languages;
+using LotteryWebApp.Models;
+using LotteryWebApp.Service;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Configuration;
+using System;
+using System.Globalization;
+
+namespace LotteryWebApp.Controllers
+{
+    [AutoValidateAntiforgeryToken]
+    public class ProfileController : BaseController
+    {
+        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
+
+        IConfiguration configuration;
+        private readonly IWebHostEnvironment webHostEnvironment;
+        APIFunctions api = new APIFunctions();
+
+        public ProfileController(IConfiguration _configuration, IWebHostEnvironment hostEnvironment)
+        {
+            configuration = _configuration;
+            webHostEnvironment = hostEnvironment;
+        }
+
+        public String GetParameter(String key)
+        {
+            return configuration.GetSection(key).Value;
+        }
+
+
+        public IActionResult Index()
+        {
+            if (!CheckAuthToken())
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+            HttpContext.Session.SetComplexData("navigator", Constants.PROFILE_NAVIGATOR);
+            ProfileViewModel model = new ProfileViewModel();
+            try
+            {
+                model.channel = GetParameter(Constants.CHANNEL);
+                // load msisdn
+                String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+                String token = HttpContext.Session.GetComplexData<String>("token");
+                Profile profile = HttpContext.Session.GetComplexData<Profile>("profile");
+                if (profile == null)
+                {
+                    // load profile
+                    UserGetProfileRequest request = new UserGetProfileRequest();
+                    request.users = msisdn;
+                    request.token = token;
+                    Profile profileGet = api.UserLoadProfileApi(configuration, request);
+                    if (profileGet.status == Code.SESSION_EXPIRED)
+                    {
+                        return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+                    }
+                    model.profile = profileGet;
+                    HttpContext.Session.SetComplexData("profile", profileGet);
+                }
+                else
+                {
+                    model.profile = profile;
+                }
+                UserStatus userStatus = HttpContext.Session.GetComplexData<UserStatus>("userStatus");
+                if (profile == null)
+                {
+                    // load profile
+                    UserStatusRequest userStatusRequest = new UserStatusRequest();
+                    userStatusRequest.users = msisdn;
+                    userStatusRequest.token = token;
+
+                    UserStatus userStatusResponse = api.GetUserStatusApi(configuration, userStatusRequest);
+                    if (userStatusResponse.status == Code.SESSION_EXPIRED)
+                    {
+                        return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+                    }
+                    model.userStatus = userStatusResponse;
+                    HttpContext.Session.SetComplexData("userStatus", userStatusResponse);
+                }
+                else
+                {
+                    model.userStatus = userStatus;
+                }
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return View(model);
+        }
+
+        public IActionResult ChangePassword(string code)
+        {
+            if (!CheckAuthToken())
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+            ProfileChangePassword_ViewModel model = new ProfileChangePassword_ViewModel();
+            model.code = code;
+
+            return View(model);
+        }
+
+        [ValidateAntiForgeryToken]
+        public JsonResult ChangePassword_Action(string oldpass, string newpass, string confirmpass)
+        {
+            try
+            {
+                String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+                String token = HttpContext.Session.GetComplexData<String>("token");
+
+                if (newpass != null && newpass != "" && newpass == confirmpass)
+                {
+                    // update 
+                    RegisterRequest registerRequest = new RegisterRequest();
+                    registerRequest.Msisdn = msisdn;
+                    registerRequest.Users = msisdn;
+                    registerRequest.pass = oldpass;
+                    registerRequest.Passnew = newpass;
+                    registerRequest.token = token;
+
+                    RegisterResponse updateProfile = api.UserChangePasswordApi(configuration, registerRequest);
+                    return Json(new
+                    {
+                        code = int.Parse(updateProfile.status),
+                        message = GetLangFromCode(updateProfile.status),
+                    });
+                }
+                else
+                {
+                    return Json(new
+                    {
+                        code = Code.FAILURE,
+                        message = Lang.new_pass_error
+                    });
+                }
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return Json(new
+            {
+                code = Code.FAILURE,
+                message = Lang.error_happened
+            });
+        }
+
+        public IActionResult ProfileInfo(String code)
+        {
+            if (!CheckAuthToken())
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+            ProfileProfileInfo_ViewModel model = new ProfileProfileInfo_ViewModel();
+            try
+            {
+                model.code = code;
+                Profile profile = HttpContext.Session.GetComplexData<Profile>("profile");
+                model.profile = profile;
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return View(model);
+        }
+
+        [ValidateAntiForgeryToken]
+        public JsonResult ProfileInfoUpdate_Action(string fullname, string birthday)
+        {
+            try
+            {
+                String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
+                String token = HttpContext.Session.GetComplexData<String>("token");
+                Profile profile = HttpContext.Session.GetComplexData<Profile>("profile");
+
+                String birthdayFormat = DateTime.ParseExact(birthday, "yyyy-MM-dd", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy");
+
+                // update 
+                UserUpdateProfileRequest userUpdateProfileRequest = new UserUpdateProfileRequest();
+                userUpdateProfileRequest.users = msisdn;
+                userUpdateProfileRequest.fullName = fullname;
+                userUpdateProfileRequest.birthday = birthdayFormat;
+                userUpdateProfileRequest.picture = profile.realPicture;
+
+                userUpdateProfileRequest.token = token;
+
+                UserUpdateProfileResponse updateProfile = api.UserUpdateProfileApi(configuration, userUpdateProfileRequest);
+                if (updateProfile.status == Code.SUCCESS)
+                {
+                    // update profile
+                    profile.fullName = fullname;
+                    profile.birthday = birthdayFormat;
+                    HttpContext.Session.SetComplexData("profile", profile);
+
+                }
+                return Json(new
+                {
+                    code = int.Parse(updateProfile.status),
+                    message = GetLangFromCode(updateProfile.status)
+                });
+            }
+            catch (Exception ex)
+            {
+                log.Error(ex);
+            }
+            return Json(new
+            {
+                code = Code.FAILURE,
+                message = Lang.error_happened
+            });
+        }
+
+        public IActionResult HowToPlay(string termType)
+        {
+            if (!CheckAuthToken())
+            {
+                return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
+            }
+            ProfileHowToPlay_ViewModel model = new ProfileHowToPlay_ViewModel();
+            model.termType = termType != null ? termType : Constants.BOLET_CODE;
+            return View(model);
+        }
+
+    }
+}

+ 22 - 0
website/Dockerfile

@@ -0,0 +1,22 @@
+#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
+
+FROM mcr.microsoft.com/dotnet/aspnet:3.1-alpine AS base
+WORKDIR /app
+EXPOSE 80
+EXPOSE 443
+
+FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
+WORKDIR /src
+COPY ["LotteryWebApp.csproj", "."]
+RUN dotnet restore "./LotteryWebApp.csproj"
+COPY . .
+WORKDIR "/src/."
+RUN dotnet build "LotteryWebApp.csproj" -c Release -o /app/build
+
+FROM build AS publish
+RUN dotnet publish "LotteryWebApp.csproj" -c Release -o /app/publish
+
+FROM base AS final
+WORKDIR /app
+COPY --from=publish /app/publish .
+ENTRYPOINT ["dotnet", "LotteryWebApp.dll"]

+ 31 - 0
website/Extensions/ConfigAction.cs

@@ -0,0 +1,31 @@
+using Microsoft.AspNetCore.Mvc.Filters;
+using Microsoft.Extensions.Configuration;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace LotteryWebApp.Extensions
+{
+    public class ConfigAction : IAsyncActionFilter
+    {
+        private MyConfig _options;
+        public ConfigAction(IConfiguration configuration)
+        {
+
+            _options = new MyConfig();
+            configuration.Bind(_options);
+        }
+
+        public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
+        {
+            ((Microsoft.AspNetCore.Mvc.Controller)context.Controller).ViewBag.MyConfig = _options;
+            await next();
+        }
+    }
+
+    public class MyConfig
+    {
+        public string MyValue { get; set; }
+    }
+}

+ 62 - 0
website/Extensions/Encrytion.cs

@@ -0,0 +1,62 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Security.Cryptography;
+using System.Threading.Tasks;
+using System.Xml;
+
+namespace NcGamesWebView.Extensions
+{
+    public static class Encryption
+    {
+        public static void FromXmlFile(this RSA rsa, string xmlFilePath)
+        {
+            RSAParameters parameters = new RSAParameters();
+
+            XmlDocument xmlDoc = new XmlDocument();
+            xmlDoc.LoadXml(File.ReadAllText(xmlFilePath));
+
+            if (xmlDoc.DocumentElement.Name.Equals("RSAKeyValue"))
+            {
+                foreach (XmlNode node in xmlDoc.DocumentElement.ChildNodes)
+                {
+                    switch (node.Name)
+                    {
+                        case "Modulus": parameters.Modulus = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
+                        case "Exponent": parameters.Exponent = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
+                        case "P": parameters.P = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
+                        case "Q": parameters.Q = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
+                        case "DP": parameters.DP = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
+                        case "DQ": parameters.DQ = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
+                        case "InverseQ": parameters.InverseQ = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
+                        case "D": parameters.D = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
+                    }
+                }
+            }
+            else
+            {
+                throw new Exception("Invalid XML RSA key.");
+            }
+
+            rsa.ImportParameters(parameters);
+        }
+
+        public static void ToXmlFile(this RSA rsa, bool includePrivateParameters, string xmlFilePath)
+        {
+            RSAParameters parameters = rsa.ExportParameters(includePrivateParameters);
+
+            File.WriteAllText(xmlFilePath,
+                string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent><P>{2}</P><Q>{3}</Q><DP>{4}</DP><DQ>{5}</DQ><InverseQ>{6}</InverseQ><D>{7}</D></RSAKeyValue>",
+                  parameters.Modulus != null ? Convert.ToBase64String(parameters.Modulus) : null,
+                  parameters.Exponent != null ? Convert.ToBase64String(parameters.Exponent) : null,
+                  parameters.P != null ? Convert.ToBase64String(parameters.P) : null,
+                  parameters.Q != null ? Convert.ToBase64String(parameters.Q) : null,
+                  parameters.DP != null ? Convert.ToBase64String(parameters.DP) : null,
+                  parameters.DQ != null ? Convert.ToBase64String(parameters.DQ) : null,
+                  parameters.InverseQ != null ? Convert.ToBase64String(parameters.InverseQ) : null,
+                  parameters.D != null ? Convert.ToBase64String(parameters.D) : null)
+                  );
+        }
+    }
+}

+ 29 - 0
website/Extensions/RewriteSubdomainRule.cs

@@ -0,0 +1,29 @@
+using Microsoft.AspNetCore.Rewrite;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+
+namespace NcGamesWebView.Extensions
+{
+    public class RewriteSubdomainRule : IRule
+    {
+        public void ApplyRule(RewriteContext context)
+        {
+            var request = context.HttpContext.Request;
+            var host = request.Host.Host;
+            // Check if the host is subdomain.domain.com or subdomain.localhost for debugging
+            if (Regex.IsMatch(host, @"^[A-Za-z\d]+\.(?:[A-Za-z\d]+\.[A-Za-z\d]+|localhost)$"))
+            {
+                string subdomain = host.Split('.')[0];
+                //modifying the request path to let the routing catch the subdomain
+                context.HttpContext.Request.Path = "/subdomain/" + subdomain + context.HttpContext.Request.Path;
+                context.Result = RuleResult.ContinueRules;
+                return;
+            }
+            context.Result = RuleResult.ContinueRules;
+            return;
+        }
+    }
+}

+ 34 - 0
website/Extensions/SessionExtensions.cs

@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace LotteryWebApp.Extensions
+{
+    using System;
+    using Microsoft.AspNetCore.Http;
+    using Newtonsoft.Json;
+
+    public static class SessionExtensions
+    {
+        public static T GetComplexData<T>(this ISession session, string key)
+        {
+            var data = session.GetString(key);
+            if (data == null)
+            {
+                return default(T);
+            }
+            return JsonConvert.DeserializeObject<T>(data);
+        }
+
+        public static void SetComplexData(this ISession session, string key, object value)
+        {
+            session.SetString(key, JsonConvert.SerializeObject(value));
+        }
+
+        public static void DeleteComplexData(this ISession session, string key)
+        {
+            session.Remove(key);
+        }
+    }
+}

+ 2025 - 0
website/Languages/Lang.Designer.cs

@@ -0,0 +1,2025 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace LotteryWebApp.Languages {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    public class Lang {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Lang() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LotteryWebApp.Languages.Lang", typeof(Lang).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to kontinye.
+        /// </summary>
+        public static string _continue {
+            get {
+                return ResourceManager.GetString("continue", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Nimewo ou a bloke. Tanpri tann jiska 5:00 pouw eseye anko..
+        /// </summary>
+        public static string account_lock {
+            get {
+                return ResourceManager.GetString("account_lock", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Your account is not existed.
+        /// </summary>
+        public static string account_not_existed {
+            get {
+                return ResourceManager.GetString("account_not_existed", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Jwe Plis.
+        /// </summary>
+        public static string add_more_order {
+            get {
+                return ResourceManager.GetString("add_more_order", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Itilize Natcom Lotto savle di ou dako ak tem yo ki nan.
+        /// </summary>
+        public static string agree_policy_1 {
+            get {
+                return ResourceManager.GetString("agree_policy_1", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to fe nou konnen lang ou pi renmen an .
+        /// </summary>
+        public static string agree_policy_2 {
+            get {
+                return ResourceManager.GetString("agree_policy_2", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Eskew gen kont deja?.
+        /// </summary>
+        public static string already_have_an_account {
+            get {
+                return ResourceManager.GetString("already_have_an_account", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to montan wap transfere a.
+        /// </summary>
+        public static string amount_transfered {
+            get {
+                return ResourceManager.GetString("amount_transfered", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Rechaj otomatik.
+        /// </summary>
+        public static string auto_fill {
+            get {
+                return ResourceManager.GetString("auto_fill", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Kont de Baz.
+        /// </summary>
+        public static string basic_account {
+            get {
+                return ResourceManager.GetString("basic_account", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Kont Natcom Lotto.
+        /// </summary>
+        public static string bee_account {
+            get {
+                return ResourceManager.GetString("bee_account", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Natcom Lotto se yon Bolet, Maryaj e jwet Lotto3, rezilta NewYork ak jwet lotto Florida.   Chwazi nimewo yo epi tann yo anonse nimewo ganyan. Ou ka transfere lajan ou genyen sou kont de baz ou oswa sou kont Natcash ou. Bon chans!.
+        /// </summary>
+        public static string bee_loto_des {
+            get {
+                return ResourceManager.GetString("bee_loto_des", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to .
+        /// </summary>
+        public static string bee_loto_intro {
+            get {
+                return ResourceManager.GetString("bee_loto_intro", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Montan wap parye a.
+        /// </summary>
+        public static string bet_amount {
+            get {
+                return ResourceManager.GetString("bet_amount", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Demann Fakti.
+        /// </summary>
+        public static string bill_order {
+            get {
+                return ResourceManager.GetString("bill_order", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Bolet.
+        /// </summary>
+        public static string bolet {
+            get {
+                return ResourceManager.GetString("bolet", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to .
+        /// </summary>
+        public static string bolet_content {
+            get {
+                return ResourceManager.GetString("bolet_content", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to .
+        /// </summary>
+        public static string bolet_how_to_play {
+            get {
+                return ResourceManager.GetString("bolet_how_to_play", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tanzaksyon an fet avek sikse.
+        /// </summary>
+        public static string brought_success {
+            get {
+                return ResourceManager.GetString("brought_success", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Achte.
+        /// </summary>
+        public static string buy {
+            get {
+                return ResourceManager.GetString("buy", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Achte bolet.
+        /// </summary>
+        public static string buy_bolet {
+            get {
+                return ResourceManager.GetString("buy_bolet", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Achte Lotto3.
+        /// </summary>
+        public static string buy_lotto3 {
+            get {
+                return ResourceManager.GetString("buy_lotto3", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Achte Maryaj.
+        /// </summary>
+        public static string buy_maryaj {
+            get {
+                return ResourceManager.GetString("buy_maryaj", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Achte Tike.
+        /// </summary>
+        public static string buy_ticket {
+            get {
+                return ResourceManager.GetString("buy_ticket", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Achte Tike.
+        /// </summary>
+        public static string buy_ticket1 {
+            get {
+                return ResourceManager.GetString("buy_ticket1", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to le ou Achte a.
+        /// </summary>
+        public static string buy_time {
+            get {
+                return ResourceManager.GetString("buy_time", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Achte tikè.
+        /// </summary>
+        public static string buying {
+            get {
+                return ResourceManager.GetString("buying", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Buying code is not existed.
+        /// </summary>
+        public static string buying_code_not_existed {
+            get {
+                return ResourceManager.GetString("buying_code_not_existed", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Rele.
+        /// </summary>
+        public static string call {
+            get {
+                return ResourceManager.GetString("call", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Anile.
+        /// </summary>
+        public static string cancel {
+            get {
+                return ResourceManager.GetString("cancel", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to .
+        /// </summary>
+        public static string cash_agent {
+            get {
+                return ResourceManager.GetString("cash_agent", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Chanje Lang.
+        /// </summary>
+        public static string change_language {
+            get {
+                return ResourceManager.GetString("change_language", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Chanje modpas ou.
+        /// </summary>
+        public static string change_password {
+            get {
+                return ResourceManager.GetString("change_password", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Achte Chanel.
+        /// </summary>
+        public static string channel_buy {
+            get {
+                return ResourceManager.GetString("channel_buy", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tanpri verifye nimewo a oswa modpas la.
+        /// </summary>
+        public static string check_phone_or_password {
+            get {
+                return ResourceManager.GetString("check_phone_or_password", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Chwazi yon nimewo.
+        /// </summary>
+        public static string choose_your_number {
+            get {
+                return ResourceManager.GetString("choose_your_number", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Efase tout.
+        /// </summary>
+        public static string clean_all {
+            get {
+                return ResourceManager.GetString("clean_all", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Femen.
+        /// </summary>
+        public static string close {
+            get {
+                return ResourceManager.GetString("close", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Konfime.
+        /// </summary>
+        public static string confirm {
+            get {
+                return ResourceManager.GetString("confirm", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Konfime OTP.
+        /// </summary>
+        public static string confirm_otp {
+            get {
+                return ResourceManager.GetString("confirm_otp", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to konfime peyman.
+        /// </summary>
+        public static string confirm_payment_1 {
+            get {
+                return ResourceManager.GetString("confirm_payment_1", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to  HTG pou w achte.
+        /// </summary>
+        public static string confirm_payment_2 {
+            get {
+                return ResourceManager.GetString("confirm_payment_2", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tike, fre.
+        /// </summary>
+        public static string confirm_payment_3 {
+            get {
+                return ResourceManager.GetString("confirm_payment_3", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to HTG, dat ak le.
+        /// </summary>
+        public static string confirm_payment_4 {
+            get {
+                return ResourceManager.GetString("confirm_payment_4", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tanpri mete OTP:.
+        /// </summary>
+        public static string confirm_payment_5 {
+            get {
+                return ResourceManager.GetString("confirm_payment_5", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Konfime tranzaksyon.
+        /// </summary>
+        public static string confirm_transaction {
+            get {
+                return ResourceManager.GetString("confirm_transaction", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Konfime transfe.
+        /// </summary>
+        public static string confirm_transfer_1 {
+            get {
+                return ResourceManager.GetString("confirm_transfer_1", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to HTG soti sou kont Lotri .
+        /// </summary>
+        public static string confirm_transfer_2 {
+            get {
+                return ResourceManager.GetString("confirm_transfer_2", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Fre 0 HTG. Tanpri mete OTP:.
+        /// </summary>
+        public static string confirm_transfer_3 {
+            get {
+                return ResourceManager.GetString("confirm_transfer_3", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Konfime nouvo modpas ou .
+        /// </summary>
+        public static string confirm_your_new_password {
+            get {
+                return ResourceManager.GetString("confirm_your_new_password", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Kontakte nou.
+        /// </summary>
+        public static string contact_us {
+            get {
+                return ResourceManager.GetString("contact_us", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Kontni.
+        /// </summary>
+        public static string content {
+            get {
+                return ResourceManager.GetString("content", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Kreye nouvo kont.
+        /// </summary>
+        public static string create_new_account {
+            get {
+                return ResourceManager.GetString("create_new_account", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Kreyol.
+        /// </summary>
+        public static string creole {
+            get {
+                return ResourceManager.GetString("creole", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Dat ou achte a.
+        /// </summary>
+        public static string date_purchase {
+            get {
+                return ResourceManager.GetString("date_purchase", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Dat ou fet.
+        /// </summary>
+        public static string dateOfBirth {
+            get {
+                return ResourceManager.GetString("dateOfBirth", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Jou.
+        /// </summary>
+        public static string days {
+            get {
+                return ResourceManager.GetString("days", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Detay sou peyman.
+        /// </summary>
+        public static string detail_of_payment {
+            get {
+                return ResourceManager.GetString("detail_of_payment", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Detay.
+        /// </summary>
+        public static string details {
+            get {
+                return ResourceManager.GetString("details", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Dat tiraj .
+        /// </summary>
+        public static string draw_date {
+            get {
+                return ResourceManager.GetString("draw_date", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Le tiraj .
+        /// </summary>
+        public static string draw_time {
+            get {
+                return ResourceManager.GetString("draw_time", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tiraj.
+        /// </summary>
+        public static string drawn {
+            get {
+                return ResourceManager.GetString("drawn", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Angle.
+        /// </summary>
+        public static string english {
+            get {
+                return ResourceManager.GetString("english", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Antre montan an 1- 10000 HTG.
+        /// </summary>
+        public static string enter_amount {
+            get {
+                return ResourceManager.GetString("enter_amount", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Antre montan an (Maks 5000HTG/Tanzaksyon).
+        /// </summary>
+        public static string enter_amount_1_1000 {
+            get {
+                return ResourceManager.GetString("enter_amount_1_1000", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Antre montan.
+        /// </summary>
+        public static string enter_amount1 {
+            get {
+                return ResourceManager.GetString("enter_amount1", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Antre dat ou fet.
+        /// </summary>
+        public static string enter_birthday {
+            get {
+                return ResourceManager.GetString("enter_birthday", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Antre 2 chif (00 a 99).
+        /// </summary>
+        public static string enter_digit_2 {
+            get {
+                return ResourceManager.GetString("enter_digit_2", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Antre 3 chif (000 a 999).
+        /// </summary>
+        public static string enter_digit_3 {
+            get {
+                return ResourceManager.GetString("enter_digit_3", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Antre 4 chif (0000 a 9999).
+        /// </summary>
+        public static string enter_digit_4 {
+            get {
+                return ResourceManager.GetString("enter_digit_4", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Antre montan an .
+        /// </summary>
+        public static string enter_money {
+            get {
+                return ResourceManager.GetString("enter_money", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Antre tout non ou.
+        /// </summary>
+        public static string enter_name {
+            get {
+                return ResourceManager.GetString("enter_name", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Antre OTP.
+        /// </summary>
+        public static string enter_otp {
+            get {
+                return ResourceManager.GetString("enter_otp", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tanpri antre OTP a pou w konekte.
+        /// </summary>
+        public static string enter_otp_to_login {
+            get {
+                return ResourceManager.GetString("enter_otp_to_login", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Antre 6 chif modpas la.
+        /// </summary>
+        public static string enter_password {
+            get {
+                return ResourceManager.GetString("enter_password", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Antre nimewo a.
+        /// </summary>
+        public static string enter_phone_number {
+            get {
+                return ResourceManager.GetString("enter_phone_number", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Antre nouvo modpas la .
+        /// </summary>
+        public static string enter_your_new_password {
+            get {
+                return ResourceManager.GetString("enter_your_new_password", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Antre ansyen modpas la.
+        /// </summary>
+        public static string enter_your_old_password {
+            get {
+                return ResourceManager.GetString("enter_your_old_password", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to gen yon ere. Tanpri eseye anko.
+        /// </summary>
+        public static string error_happened {
+            get {
+                return ResourceManager.GetString("error_happened", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to gen yon ere. Tanpri eseye anko.
+        /// </summary>
+        public static string error_happened1 {
+            get {
+                return ResourceManager.GetString("error_happened1", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Echek.
+        /// </summary>
+        public static string fail {
+            get {
+                return ResourceManager.GetString("fail", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to FAQ.
+        /// </summary>
+        public static string faq {
+            get {
+                return ResourceManager.GetString("faq", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Fre.
+        /// </summary>
+        public static string fee {
+            get {
+                return ResourceManager.GetString("fee", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Fre transfe.
+        /// </summary>
+        public static string fee_tranfer {
+            get {
+                return ResourceManager.GetString("fee_tranfer", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tanpri antre modpas ou.
+        /// </summary>
+        public static string fill_password {
+            get {
+                return ResourceManager.GetString("fill_password", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tanpri antre nimewo telefon ou .
+        /// </summary>
+        public static string fill_phone {
+            get {
+                return ResourceManager.GetString("fill_phone", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tanptre antre nimewo ou.
+        /// </summary>
+        public static string fill_your_number {
+            get {
+                return ResourceManager.GetString("fill_your_number", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Lotri Florida.
+        /// </summary>
+        public static string florida_lottery {
+            get {
+                return ResourceManager.GetString("florida_lottery", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Ou blye Modpas la.
+        /// </summary>
+        public static string forgot_password {
+            get {
+                return ResourceManager.GetString("forgot_password", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Fre.
+        /// </summary>
+        public static string free {
+            get {
+                return ResourceManager.GetString("free", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to soti nan.
+        /// </summary>
+        public static string from {
+            get {
+                return ResourceManager.GetString("from", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Soti sou nimewo ou.
+        /// </summary>
+        public static string from_your_number {
+            get {
+                return ResourceManager.GetString("from_your_number", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Non konple ou mete a pa valid.
+        /// </summary>
+        public static string fullname_not_valid {
+            get {
+                return ResourceManager.GetString("fullname_not_valid", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Rechech OTP.
+        /// </summary>
+        public static string get_otp1 {
+            get {
+                return ResourceManager.GetString("get_otp1", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Komanse.
+        /// </summary>
+        public static string get_started {
+            get {
+                return ResourceManager.GetString("get_started", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Gen chans pou genyen.
+        /// </summary>
+        public static string have_chance_to_get {
+            get {
+                return ResourceManager.GetString("have_chance_to_get", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Istorik.
+        /// </summary>
+        public static string history {
+            get {
+                return ResourceManager.GetString("history", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Akey.
+        /// </summary>
+        public static string home {
+            get {
+                return ResourceManager.GetString("home", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Paj dakey.
+        /// </summary>
+        public static string home_page {
+            get {
+                return ResourceManager.GetString("home_page", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Hours.
+        /// </summary>
+        public static string hours {
+            get {
+                return ResourceManager.GetString("hours", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Koman ou ka jwe Natcom Lotto .
+        /// </summary>
+        public static string how_to_play {
+            get {
+                return ResourceManager.GetString("how_to_play", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to System is upgrading..
+        /// </summary>
+        public static string in_blacklist {
+            get {
+                return ResourceManager.GetString("in_blacklist", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Nimewo ou nan tiraj la dat:.
+        /// </summary>
+        public static string in_draw_date {
+            get {
+                return ResourceManager.GetString("in_draw_date", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Your internet has a problem..
+        /// </summary>
+        public static string internet_error {
+            get {
+                return ResourceManager.GetString("internet_error", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Lang.
+        /// </summary>
+        public static string language {
+            get {
+                return ResourceManager.GetString("language", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Konekte.
+        /// </summary>
+        public static string login {
+            get {
+                return ResourceManager.GetString("login", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Koneksyon echwe paske modpas la pa bon.
+        /// </summary>
+        public static string login_fail_wrong_pass {
+            get {
+                return ResourceManager.GetString("login_fail_wrong_pass", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Dekonekte.
+        /// </summary>
+        public static string logout {
+            get {
+                return ResourceManager.GetString("logout", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Se yon Bolet, Maryaj e jwet Lotto3, rezilta NewYork ak jwet lotto Florida.   Chwazi nimewo yo epi tann yo anonse nimewo ganyan. Ou ka transfere lajan ou genyen sou kont de baz ou oswa sou kont Natcash ou. Bon chans!.
+        /// </summary>
+        public static string loto_des_v2 {
+            get {
+                return ResourceManager.GetString("loto_des_v2", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Lotto3.
+        /// </summary>
+        public static string lotto3 {
+            get {
+                return ResourceManager.GetString("lotto3", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to .
+        /// </summary>
+        public static string lotto3_content {
+            get {
+                return ResourceManager.GetString("lotto3_content", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to .
+        /// </summary>
+        public static string marya_content {
+            get {
+                return ResourceManager.GetString("marya_content", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Maryaj.
+        /// </summary>
+        public static string maryaj {
+            get {
+                return ResourceManager.GetString("maryaj", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Dezole! Komand ou a depase 5 . Tanpri eseye..
+        /// </summary>
+        public static string max_5_tickets {
+            get {
+                return ResourceManager.GetString("max_5_tickets", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Kantite lajan an depase limit la.
+        /// </summary>
+        public static string max_transfer_1000HTG {
+            get {
+                return ResourceManager.GetString("max_transfer_1000HTG", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Minit.
+        /// </summary>
+        public static string mins {
+            get {
+                return ResourceManager.GetString("mins", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Lajan.
+        /// </summary>
+        public static string money {
+            get {
+                return ResourceManager.GetString("money", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Lajan sou (HTG).
+        /// </summary>
+        public static string money_on {
+            get {
+                return ResourceManager.GetString("money_on", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Detay.
+        /// </summary>
+        public static string more {
+            get {
+                return ResourceManager.GetString("more", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Ou poko konekte. Tanpri konekte anko.
+        /// </summary>
+        public static string must_login {
+            get {
+                return ResourceManager.GetString("must_login", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Non ou.
+        /// </summary>
+        public static string name {
+            get {
+                return ResourceManager.GetString("name", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to NatCash.
+        /// </summary>
+        public static string NatCash {
+            get {
+                return ResourceManager.GetString("NatCash", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tanpri verifye nouvo modpas ou .
+        /// </summary>
+        public static string new_pass_error {
+            get {
+                return ResourceManager.GetString("new_pass_error", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Lotri New York.
+        /// </summary>
+        public static string new_york_lottery {
+            get {
+                return ResourceManager.GetString("new_york_lottery", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Prochen Tiraj.
+        /// </summary>
+        public static string next_draw {
+            get {
+                return ResourceManager.GetString("next_draw", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to You have no permission to do this action.
+        /// </summary>
+        public static string no_permission {
+            get {
+                return ResourceManager.GetString("no_permission", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to not defined.
+        /// </summary>
+        public static string not_defined {
+            get {
+                return ResourceManager.GetString("not_defined", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to An atant.
+        /// </summary>
+        public static string not_draw {
+            get {
+                return ResourceManager.GetString("not_draw", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Ou pa gen ase lajan sou kont Lotri ou pou fe tranzaksyon sa..
+        /// </summary>
+        public static string not_enough_money {
+            get {
+                return ResourceManager.GetString("not_enough_money", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Ou pa gen ase lajan sou kont Lotri ou pou fe tranzaksyon sa..
+        /// </summary>
+        public static string not_enough_money_to_exchange {
+            get {
+                return ResourceManager.GetString("not_enough_money_to_exchange", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Ou pa jwenn OTP a?.
+        /// </summary>
+        public static string not_get_otp {
+            get {
+                return ResourceManager.GetString("not_get_otp", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Benefisye a poko gen kont Natcash. Tanpri verifye kont Natcash ou anko.
+        /// </summary>
+        public static string not_register_natcash {
+            get {
+                return ResourceManager.GetString("not_register_natcash", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Pedi.
+        /// </summary>
+        public static string not_win {
+            get {
+                return ResourceManager.GetString("not_win", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Not: Pablye modpas ou epi pajanm patajel ak pesonn.
+        /// </summary>
+        public static string note_password {
+            get {
+                return ResourceManager.GetString("note_password", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Nimewo.
+        /// </summary>
+        public static string number {
+            get {
+                return ResourceManager.GetString("number", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Oswa.
+        /// </summary>
+        public static string or {
+            get {
+                return ResourceManager.GetString("or", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to oswa Chwazi.
+        /// </summary>
+        public static string or_select {
+            get {
+                return ResourceManager.GetString("or_select", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Damann kod.
+        /// </summary>
+        public static string order_code {
+            get {
+                return ResourceManager.GetString("order_code", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to OTP.
+        /// </summary>
+        public static string otp {
+            get {
+                return ResourceManager.GetString("otp", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Kod OTP a pa bon.
+        /// </summary>
+        public static string otp_invalid {
+            get {
+                return ResourceManager.GetString("otp_invalid", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to OTP timeout.
+        /// </summary>
+        public static string otp_timeout {
+            get {
+                return ResourceManager.GetString("otp_timeout", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Demann ou wa plis ke 5000HTG. Tanpri eseye anko..
+        /// </summary>
+        public static string over_1000HTG_transfer {
+            get {
+                return ResourceManager.GetString("over_1000HTG_transfer", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Kantite lajan an depase limit la.
+        /// </summary>
+        public static string over_each_exchange {
+            get {
+                return ResourceManager.GetString("over_each_exchange", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Kantite Lajan an depase limit pou  jounen an.
+        /// </summary>
+        public static string over_exchange_per_day {
+            get {
+                return ResourceManager.GetString("over_exchange_per_day", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Params are invalid.
+        /// </summary>
+        public static string params_invalid {
+            get {
+                return ResourceManager.GetString("params_invalid", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Antre 6 chif selman.
+        /// </summary>
+        public static string pass_tip_1 {
+            get {
+                return ResourceManager.GetString("pass_tip_1", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Yon bon modpas: soti 0 - 9, dwe gen karakte ( se pa karakte espesyal).
+        /// </summary>
+        public static string pass_tip_2 {
+            get {
+                return ResourceManager.GetString("pass_tip_2", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Modpass.
+        /// </summary>
+        public static string password {
+            get {
+                return ResourceManager.GetString("password", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Konsey sou modpas la.
+        /// </summary>
+        public static string password_tip {
+            get {
+                return ResourceManager.GetString("password_tip", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Peyman.
+        /// </summary>
+        public static string payment {
+            get {
+                return ResourceManager.GetString("payment", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Kont peyman.
+        /// </summary>
+        public static string payment_account {
+            get {
+                return ResourceManager.GetString("payment_account", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Metod peyman.
+        /// </summary>
+        public static string payment_mothod {
+            get {
+                return ResourceManager.GetString("payment_mothod", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Nimewo telefon sa pa vaild.
+        /// </summary>
+        public static string phone_invalid {
+            get {
+                return ResourceManager.GetString("phone_invalid", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Nimero telefon.
+        /// </summary>
+        public static string phone_number {
+            get {
+                return ResourceManager.GetString("phone_number", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Your pin is wrong.
+        /// </summary>
+        public static string pin_wrong {
+            get {
+                return ResourceManager.GetString("pin_wrong", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Jwe.
+        /// </summary>
+        public static string play {
+            get {
+                return ResourceManager.GetString("play", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Pri.
+        /// </summary>
+        public static string price {
+            get {
+                return ResourceManager.GetString("price", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Pwofil.
+        /// </summary>
+        public static string profile {
+            get {
+                return ResourceManager.GetString("profile", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Your promotion code is not active.
+        /// </summary>
+        public static string promotion_code_inactive {
+            get {
+                return ResourceManager.GetString("promotion_code_inactive", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Your promotion code is invalid.
+        /// </summary>
+        public static string promotion_code_invalid {
+            get {
+                return ResourceManager.GetString("promotion_code_invalid", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Your promotion code was used..
+        /// </summary>
+        public static string promotion_code_used {
+            get {
+                return ResourceManager.GetString("promotion_code_used", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Question.
+        /// </summary>
+        public static string question {
+            get {
+                return ResourceManager.GetString("question", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Benefisye.
+        /// </summary>
+        public static string receiver {
+            get {
+                return ResourceManager.GetString("receiver", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Pou lot nimewo Natcom.
+        /// </summary>
+        public static string receiver_phone {
+            get {
+                return ResourceManager.GetString("receiver_phone", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Anrejistre.
+        /// </summary>
+        public static string register {
+            get {
+                return ResourceManager.GetString("register", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Refe komann nan.
+        /// </summary>
+        public static string reorder {
+            get {
+                return ResourceManager.GetString("reorder", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Voyel anko.
+        /// </summary>
+        public static string resend_otp {
+            get {
+                return ResourceManager.GetString("resend_otp", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Voye OTP a anko.
+        /// </summary>
+        public static string resent_otp {
+            get {
+                return ResourceManager.GetString("resent_otp", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Wap jwenn OTP a Pre 1 minit..
+        /// </summary>
+        public static string reset_after_1_minute {
+            get {
+                return ResourceManager.GetString("reset_after_1_minute", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Rezilta.
+        /// </summary>
+        public static string results {
+            get {
+                return ResourceManager.GetString("results", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tounen nan paj dakey.
+        /// </summary>
+        public static string return_home_page {
+            get {
+                return ResourceManager.GetString("return_home_page", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to verifye peyman.
+        /// </summary>
+        public static string review_payment {
+            get {
+                return ResourceManager.GetString("review_payment", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Regleman.
+        /// </summary>
+        public static string rules {
+            get {
+                return ResourceManager.GetString("rules", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Rechech .
+        /// </summary>
+        public static string search {
+            get {
+                return ResourceManager.GetString("search", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Segonn.
+        /// </summary>
+        public static string seconds {
+            get {
+                return ResourceManager.GetString("seconds", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Plis detay.
+        /// </summary>
+        public static string see_more {
+            get {
+                return ResourceManager.GetString("see_more", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Chwazi yon kont.
+        /// </summary>
+        public static string select_an_account {
+            get {
+                return ResourceManager.GetString("select_an_account", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to espedite.
+        /// </summary>
+        public static string sender {
+            get {
+                return ResourceManager.GetString("sender", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Soti nan nimewo ou.
+        /// </summary>
+        public static string sender_phone {
+            get {
+                return ResourceManager.GetString("sender_phone", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Sote pouw konekte kom envite.
+        /// </summary>
+        public static string skip_to_guest {
+            get {
+                return ResourceManager.GetString("skip_to_guest", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Komanse itilize Natcom Lotto.
+        /// </summary>
+        public static string start_using_bee_loto {
+            get {
+                return ResourceManager.GetString("start_using_bee_loto", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Estati.
+        /// </summary>
+        public static string status {
+            get {
+                return ResourceManager.GetString("status", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Sikse.
+        /// </summary>
+        public static string success {
+            get {
+                return ResourceManager.GetString("success", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Sistem nan ap fe mizajou.
+        /// </summary>
+        public static string system_update {
+            get {
+                return ResourceManager.GetString("system_update", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Dat ou achte a.
+        /// </summary>
+        public static string term {
+            get {
+                return ResourceManager.GetString("term", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to This term&apos;s time is timeout. Please try again..
+        /// </summary>
+        public static string term_timeout {
+            get {
+                return ResourceManager.GetString("term_timeout", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tem ak kondisyon.
+        /// </summary>
+        public static string terms_and_conditions {
+            get {
+                return ResourceManager.GetString("terms_and_conditions", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Mesi!.
+        /// </summary>
+        public static string thank_you {
+            get {
+                return ResourceManager.GetString("thank_you", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tike.
+        /// </summary>
+        public static string ticket {
+            get {
+                return ResourceManager.GetString("ticket", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Kod tike.
+        /// </summary>
+        public static string ticket_code {
+            get {
+                return ResourceManager.GetString("ticket_code", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tike ou yo pa valid.
+        /// </summary>
+        public static string ticket_invalid {
+            get {
+                return ResourceManager.GetString("ticket_invalid", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Le.
+        /// </summary>
+        public static string time {
+            get {
+                return ResourceManager.GetString("time", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to a.
+        /// </summary>
+        public static string to {
+            get {
+                return ResourceManager.GetString("to", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to bay lot nimweo Natcom.
+        /// </summary>
+        public static string to_other_natcom_number {
+            get {
+                return ResourceManager.GetString("to_other_natcom_number", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Your token is invalid.
+        /// </summary>
+        public static string token_invalid {
+            get {
+                return ResourceManager.GetString("token_invalid", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Montan Total.
+        /// </summary>
+        public static string total_money {
+            get {
+                return ResourceManager.GetString("total_money", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tike total .
+        /// </summary>
+        public static string total_ticket {
+            get {
+                return ResourceManager.GetString("total_ticket", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Retire Lajan.
+        /// </summary>
+        public static string tranfer_win_money {
+            get {
+                return ResourceManager.GetString("tranfer_win_money", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Transfe.
+        /// </summary>
+        public static string transfer {
+            get {
+                return ResourceManager.GetString("transfer", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Metod transfe.
+        /// </summary>
+        public static string transfer_method {
+            get {
+                return ResourceManager.GetString("transfer_method", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Ou transfere lajan an ak sikse!.
+        /// </summary>
+        public static string transfer_success {
+            get {
+                return ResourceManager.GetString("transfer_success", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tip.
+        /// </summary>
+        public static string type {
+            get {
+                return ResourceManager.GetString("type", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Mizajou.
+        /// </summary>
+        public static string update {
+            get {
+                return ResourceManager.GetString("update", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Mizajou reyisi.
+        /// </summary>
+        public static string update_successful {
+            get {
+                return ResourceManager.GetString("update_successful", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Ere foto itilizate.
+        /// </summary>
+        public static string user_avatar_error {
+            get {
+                return ResourceManager.GetString("user_avatar_error", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Verifye kont wap konekte a.
+        /// </summary>
+        public static string verify_otp {
+            get {
+                return ResourceManager.GetString("verify_otp", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tann rezilta.
+        /// </summary>
+        public static string waiting_for_result {
+            get {
+                return ResourceManager.GetString("waiting_for_result", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Your wallet is not active..
+        /// </summary>
+        public static string wallet_not_active {
+            get {
+                return ResourceManager.GetString("wallet_not_active", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tranzaksyon an pa reyisi, oupoko kreye kont natcash ou. Pouw kreye yon kont  Natcash, fe *202# epi swiv estriksyon yo. Mesi!.
+        /// </summary>
+        public static string wallet_not_existed {
+            get {
+                return ResourceManager.GetString("wallet_not_existed", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Byenvini nan Natcom Lotto.
+        /// </summary>
+        public static string welcome_to_bee_loto {
+            get {
+                return ResourceManager.GetString("welcome_to_bee_loto", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Genyen.
+        /// </summary>
+        public static string win {
+            get {
+                return ResourceManager.GetString("win", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Kont ganyan.
+        /// </summary>
+        public static string winning_account {
+            get {
+                return ResourceManager.GetString("winning_account", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Modpas la pa bon. Tanpri eseye anko.
+        /// </summary>
+        public static string wrong_otp {
+            get {
+                return ResourceManager.GetString("wrong_otp", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Ou anrejistre kont Natcom Lotto a ak sikse.
+        /// </summary>
+        public static string you_have_registered_Bee_loto {
+            get {
+                return ResourceManager.GetString("you_have_registered_Bee_loto", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Ou jwenn nimewo ganyan an, ou genyen:.
+        /// </summary>
+        public static string you_have_winning_number {
+            get {
+                return ResourceManager.GetString("you_have_winning_number", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Your are too younger to use this service..
+        /// </summary>
+        public static string younger_to_use {
+            get {
+                return ResourceManager.GetString("younger_to_use", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Nimewo ou .
+        /// </summary>
+        public static string your_number {
+            get {
+                return ResourceManager.GetString("your_number", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Modpas la transfere sou nimewo ou. Tanpri verifye mesaj ou. Mesi!.
+        /// </summary>
+        public static string your_password_reset {
+            get {
+                return ResourceManager.GetString("your_password_reset", resourceCulture);
+            }
+        }
+    }
+}

+ 776 - 0
website/Languages/Lang.fr.resx

@@ -0,0 +1,776 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="account_lock" xml:space="preserve">
+    <value>You number is locked. Please wait to 5:00 to try again.</value>
+  </data>
+  <data name="account_not_existed" xml:space="preserve">
+    <value>Your account is not existed</value>
+  </data>
+  <data name="add_more_order" xml:space="preserve">
+    <value>Add more</value>
+  </data>
+  <data name="agree_policy_1" xml:space="preserve">
+    <value>Using Bee Lotto indicates that you have agreed to the terms presented in the </value>
+  </data>
+  <data name="agree_policy_2" xml:space="preserve">
+    <value>Let us know your language preferences.</value>
+  </data>
+  <data name="already_have_an_account" xml:space="preserve">
+    <value>Already have an account?</value>
+  </data>
+  <data name="amount_transfered" xml:space="preserve">
+    <value>Amount to transfer</value>
+  </data>
+  <data name="auto_fill" xml:space="preserve">
+    <value>Auto fill</value>
+  </data>
+  <data name="basic_account" xml:space="preserve">
+    <value>Basic Account</value>
+  </data>
+  <data name="bee_account" xml:space="preserve">
+    <value>Natcom Lotto’s Account</value>
+  </data>
+  <data name="bee_loto_des" xml:space="preserve">
+    <value>Natcom Lotto is a Bolet, Maryaj and Lotto3 games, results of NewYork and Florida lottery games. Pick your numbers and wait for the winning combination to be announced. You can convert the winning amount to Natcom mobile balance or Natcash. Good luck!</value>
+  </data>
+  <data name="bee_loto_intro" xml:space="preserve">
+    <value>Natcom Lotto is a new VAS lottery service of Natcom. You can play via USSD or WEB/APP. You can also receive SMS results with FREE once you send ON to 7777 and you can send OFF to 7777 to request for not receive MT sms results or MT information from Lottery and ON to recover MT sms.
+You can also try your luck with Natcom Lottery draw.
+We’ll help you create an account in a few easy steps.</value>
+  </data>
+  <data name="bet_amount" xml:space="preserve">
+    <value>Bet Amount</value>
+  </data>
+  <data name="bill_order" xml:space="preserve">
+    <value>Bill Order</value>
+  </data>
+  <data name="bolet" xml:space="preserve">
+    <value>Bolet</value>
+  </data>
+  <data name="bolet_content" xml:space="preserve">
+    <value>&lt;p&gt;&lt;span style="white-space:pre-wrap;"&gt;1.Bolet l&amp;agrave; 1 game trong Bee Lotto. Kh&amp;aacute;ch h&amp;agrave;ng chọn 2 số bất kỳ từ 00 - 99. Gi&amp;aacute; trị v&amp;eacute; nhỏ nhất l&amp;agrave; 1 HTG, cao nhất l&amp;agrave; 1.000 HTG. Kết quả của Bolet dựa tr&amp;ecirc;n kết quả của giải NUMBER v&amp;agrave; WIN4 của xổ số NewYork. &lt;br&gt;&lt;br&gt;2. Bolet bao gồm 3 giải:&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* Lot1: bao gồm chữ số ở vị tr&amp;iacute; số 2 v&amp;agrave; số 3 của xổ số NUMBER. Tỉ lệ tr&amp;uacute;ng thưởng: mua 1 HTG tr&amp;uacute;ng 50 HTG&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* Lot 2: bao gồm chữ số ở vị tr&amp;iacute; số 1 v&amp;agrave; số 2 của xố số WIN4. Tỉ lệ tr&amp;uacute;ng thưởng: mua 1 HTG tr&amp;uacute;ng 20 HTG&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* Lot 3: bao gồm chữ số ở vị tr&amp;iacute; số 3 v&amp;agrave; số 4 của xổ số WIN4. Tỉ lệ tr&amp;uacute;ng thưởng: mua 1 HTG tr&amp;uacute;ng 20 HTG&lt;br&gt;&lt;br&gt;3. Thời gian tham gia mua v&amp;eacute;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Khung giờ ng&amp;agrave;y: Từ 0:00 - 14:00. Giờ trả kết quả: 14:30&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Khung giờ tối: Từ 15:00 - 20:00. Giờ trả kết quả 20:30&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt; &lt;/p&gt;</value>
+  </data>
+  <data name="bolet_how_to_play" xml:space="preserve">
+    <value>&lt;p&gt;&lt;span style=white-space:pre-wrap;"&gt;&lt;strong&gt;&lt;span style="font-size: 20px;"&gt;How to play Bolet&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="brought_success" xml:space="preserve">
+    <value>You have bought ticket Natcom Lotto successfully.</value>
+  </data>
+  <data name="buy" xml:space="preserve">
+    <value>Buy</value>
+  </data>
+  <data name="buying" xml:space="preserve">
+    <value>Buying</value>
+  </data>
+  <data name="buying_code_not_existed" xml:space="preserve">
+    <value>Buying code is not existed</value>
+  </data>
+  <data name="buy_bolet" xml:space="preserve">
+    <value>Buy Bolet</value>
+  </data>
+  <data name="buy_lotto3" xml:space="preserve">
+    <value>Buy Lotto3</value>
+  </data>
+  <data name="buy_maryaj" xml:space="preserve">
+    <value>Buy Maryaj</value>
+  </data>
+  <data name="buy_ticket" xml:space="preserve">
+    <value>Buy Ticket</value>
+  </data>
+  <data name="buy_ticket1" xml:space="preserve">
+    <value>Buy ticket</value>
+  </data>
+  <data name="buy_time" xml:space="preserve">
+    <value>Buy Time</value>
+  </data>
+  <data name="call" xml:space="preserve">
+    <value>Call</value>
+  </data>
+  <data name="cancel" xml:space="preserve">
+    <value>Cancel</value>
+  </data>
+  <data name="cash_agent" xml:space="preserve">
+    <value>Cash Agent</value>
+  </data>
+  <data name="change_language" xml:space="preserve">
+    <value>Change Language</value>
+  </data>
+  <data name="change_password" xml:space="preserve">
+    <value>Change your password</value>
+  </data>
+  <data name="channel_buy" xml:space="preserve">
+    <value>Channel Buy</value>
+  </data>
+  <data name="check_phone_or_password" xml:space="preserve">
+    <value>Please check the number or password</value>
+  </data>
+  <data name="choose_your_number" xml:space="preserve">
+    <value>Choose your number</value>
+  </data>
+  <data name="clean_all" xml:space="preserve">
+    <value>Clean all</value>
+  </data>
+  <data name="close" xml:space="preserve">
+    <value>Close</value>
+  </data>
+  <data name="confirm" xml:space="preserve">
+    <value>Confirm</value>
+  </data>
+  <data name="confirm_otp" xml:space="preserve">
+    <value>Confirm OTP</value>
+  </data>
+  <data name="confirm_payment_1" xml:space="preserve">
+    <value>Confirm payment</value>
+  </data>
+  <data name="confirm_payment_2" xml:space="preserve">
+    <value>HTG to buy </value>
+  </data>
+  <data name="confirm_payment_3" xml:space="preserve">
+    <value>ticket, fee</value>
+  </data>
+  <data name="confirm_payment_4" xml:space="preserve">
+    <value>HTG, draw time</value>
+  </data>
+  <data name="confirm_payment_5" xml:space="preserve">
+    <value>. Please fill OTP:</value>
+  </data>
+  <data name="confirm_transaction" xml:space="preserve">
+    <value>Confirm transaction</value>
+  </data>
+  <data name="confirm_transfer_1" xml:space="preserve">
+    <value>Confirm transfer</value>
+  </data>
+  <data name="confirm_transfer_2" xml:space="preserve">
+    <value>HTG from Lottery account to</value>
+  </data>
+  <data name="confirm_transfer_3" xml:space="preserve">
+    <value>, fee 0 HTG. Please fill OTP:</value>
+  </data>
+  <data name="confirm_your_new_password" xml:space="preserve">
+    <value>Confirm your new password</value>
+  </data>
+  <data name="contact_us" xml:space="preserve">
+    <value>Contact us</value>
+  </data>
+  <data name="content" xml:space="preserve">
+    <value>Content</value>
+  </data>
+  <data name="continue" xml:space="preserve">
+    <value>Continue</value>
+  </data>
+  <data name="create_new_account" xml:space="preserve">
+    <value>Create new account</value>
+  </data>
+  <data name="creole" xml:space="preserve">
+    <value>Creole</value>
+  </data>
+  <data name="dateOfBirth" xml:space="preserve">
+    <value>Date of birth</value>
+  </data>
+  <data name="date_purchase" xml:space="preserve">
+    <value>Date of purchase</value>
+  </data>
+  <data name="days" xml:space="preserve">
+    <value>Days</value>
+  </data>
+  <data name="details" xml:space="preserve">
+    <value>Details</value>
+  </data>
+  <data name="detail_of_payment" xml:space="preserve">
+    <value>Details of Payment</value>
+  </data>
+  <data name="drawn" xml:space="preserve">
+    <value>Drawn</value>
+  </data>
+  <data name="draw_date" xml:space="preserve">
+    <value>Draw Date</value>
+  </data>
+  <data name="draw_time" xml:space="preserve">
+    <value>Draw Time</value>
+  </data>
+  <data name="english" xml:space="preserve">
+    <value>English</value>
+  </data>
+  <data name="enter_amount" xml:space="preserve">
+    <value>Enter amount 1-10,000 HTG</value>
+  </data>
+  <data name="enter_amount1" xml:space="preserve">
+    <value>Enter amount</value>
+  </data>
+  <data name="enter_amount_1_1000" xml:space="preserve">
+    <value>Enter amount (maximum 5000HTG/transaction)</value>
+  </data>
+  <data name="enter_birthday" xml:space="preserve">
+    <value>Enter your birthday</value>
+  </data>
+  <data name="enter_digit_2" xml:space="preserve">
+    <value>Enter 2 digits (00 to 99)</value>
+  </data>
+  <data name="enter_digit_3" xml:space="preserve">
+    <value>Enter 3 digits (000 to 999)</value>
+  </data>
+  <data name="enter_digit_4" xml:space="preserve">
+    <value>Enter 4 digits (0000 to 9999)</value>
+  </data>
+  <data name="enter_money" xml:space="preserve">
+    <value>Enter your money</value>
+  </data>
+  <data name="enter_name" xml:space="preserve">
+    <value>Enter your full name</value>
+  </data>
+  <data name="enter_otp" xml:space="preserve">
+    <value>Enter your OTP</value>
+  </data>
+  <data name="enter_otp_to_login" xml:space="preserve">
+    <value>Please enter your OTP to log in</value>
+  </data>
+  <data name="enter_password" xml:space="preserve">
+    <value>Enter your 6 digits password</value>
+  </data>
+  <data name="enter_phone_number" xml:space="preserve">
+    <value>Enter your number</value>
+  </data>
+  <data name="enter_your_new_password" xml:space="preserve">
+    <value>Enter your new password</value>
+  </data>
+  <data name="enter_your_old_password" xml:space="preserve">
+    <value>Enter your old password</value>
+  </data>
+  <data name="error_happened" xml:space="preserve">
+    <value>An error was happened. Please try again.</value>
+  </data>
+  <data name="error_happened1" xml:space="preserve">
+    <value>An error was happened. Please try again</value>
+  </data>
+  <data name="fail" xml:space="preserve">
+    <value>Fail</value>
+  </data>
+  <data name="faq" xml:space="preserve">
+    <value>FAQ</value>
+  </data>
+  <data name="fee" xml:space="preserve">
+    <value>Fee</value>
+  </data>
+  <data name="fee_tranfer" xml:space="preserve">
+    <value>Fee transfer</value>
+  </data>
+  <data name="fill_password" xml:space="preserve">
+    <value>Please fill your password</value>
+  </data>
+  <data name="fill_phone" xml:space="preserve">
+    <value>Please fill your phone number</value>
+  </data>
+  <data name="fill_your_number" xml:space="preserve">
+    <value>Please fill your number</value>
+  </data>
+  <data name="florida_lottery" xml:space="preserve">
+    <value>Florida Lottery</value>
+  </data>
+  <data name="forgot_password" xml:space="preserve">
+    <value>Forgot Password</value>
+  </data>
+  <data name="free" xml:space="preserve">
+    <value>Free</value>
+  </data>
+  <data name="from" xml:space="preserve">
+    <value>From</value>
+  </data>
+  <data name="from_your_number" xml:space="preserve">
+    <value>Transfer to Your number</value>
+  </data>
+  <data name="fullname_not_valid" xml:space="preserve">
+    <value>Your fullname is not valid</value>
+  </data>
+  <data name="get_otp1" xml:space="preserve">
+    <value>Get OTP</value>
+  </data>
+  <data name="get_started" xml:space="preserve">
+    <value>Get started</value>
+  </data>
+  <data name="have_chance_to_get" xml:space="preserve">
+    <value>Have a chance to get</value>
+  </data>
+  <data name="history" xml:space="preserve">
+    <value>History</value>
+  </data>
+  <data name="home" xml:space="preserve">
+    <value>Home</value>
+  </data>
+  <data name="home_page" xml:space="preserve">
+    <value>Homepage</value>
+  </data>
+  <data name="hours" xml:space="preserve">
+    <value>Hours</value>
+  </data>
+  <data name="how_to_play" xml:space="preserve">
+    <value>How to play Natcom Lotto</value>
+  </data>
+  <data name="internet_error" xml:space="preserve">
+    <value>Your internet has a problem.</value>
+  </data>
+  <data name="in_blacklist" xml:space="preserve">
+    <value>System is upgrading.</value>
+  </data>
+  <data name="in_draw_date" xml:space="preserve">
+    <value>Your number in this draw date:</value>
+  </data>
+  <data name="language" xml:space="preserve">
+    <value>Language</value>
+  </data>
+  <data name="login" xml:space="preserve">
+    <value>Log in</value>
+  </data>
+  <data name="login_fail_wrong_pass" xml:space="preserve">
+    <value>Login failed because incorrect password.</value>
+  </data>
+  <data name="logout" xml:space="preserve">
+    <value>Log out</value>
+  </data>
+  <data name="loto_des_v2" xml:space="preserve">
+    <value> is a Bolet, Maryaj and Lotto3 games, results of NewYork and Florida lottery games. Pick your numbers and wait for the winning combination to be announced. You can convert the winning amount to Natcom mobile balance or Natcash. Good luck!</value>
+  </data>
+  <data name="lotto3" xml:space="preserve">
+    <value>Lotto3</value>
+  </data>
+  <data name="lotto3_content" xml:space="preserve">
+    <value>&lt;p&gt;&lt;span style="white-space:pre-wrap;"&gt;1.Bolet l&amp;agrave; 1 game trong Bee Lotto. Kh&amp;aacute;ch h&amp;agrave;ng chọn 2 số bất kỳ từ 00 - 99. Gi&amp;aacute; trị v&amp;eacute; nhỏ nhất l&amp;agrave; 1 HTG, cao nhất l&amp;agrave; 1.000 HTG. Kết quả của Bolet dựa tr&amp;ecirc;n kết quả của giải NUMBER v&amp;agrave; WIN4 của xổ số NewYork. &lt;br&gt;&lt;br&gt;2. Bolet bao gồm 3 giải:&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* Lot1: bao gồm chữ số ở vị tr&amp;iacute; số 2 v&amp;agrave; số 3 của xổ số NUMBER. Tỉ lệ tr&amp;uacute;ng thưởng: mua 1 HTG tr&amp;uacute;ng 50 HTG&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* Lot 2: bao gồm chữ số ở vị tr&amp;iacute; số 1 v&amp;agrave; số 2 của xố số WIN4. Tỉ lệ tr&amp;uacute;ng thưởng: mua 1 HTG tr&amp;uacute;ng 20 HTG&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* Lot 3: bao gồm chữ số ở vị tr&amp;iacute; số 3 v&amp;agrave; số 4 của xổ số WIN4. Tỉ lệ tr&amp;uacute;ng thưởng: mua 1 HTG tr&amp;uacute;ng 20 HTG&lt;br&gt;&lt;br&gt;3. Thời gian tham gia mua v&amp;eacute;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Khung giờ ng&amp;agrave;y: Từ 0:00 - 14:00. Giờ trả kết quả: 14:30&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Khung giờ tối: Từ 15:00 - 20:00. Giờ trả kết quả 20:30&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt; &lt;/p&gt;</value>
+  </data>
+  <data name="maryaj" xml:space="preserve">
+    <value>Maryaj</value>
+  </data>
+  <data name="marya_content" xml:space="preserve">
+    <value>&lt;p&gt;&lt;span style="white-space:pre-wrap;"&gt;1.Bolet l&amp;agrave; 1 game trong Bee Lotto. Kh&amp;aacute;ch h&amp;agrave;ng chọn 2 số bất kỳ từ 00 - 99. Gi&amp;aacute; trị v&amp;eacute; nhỏ nhất l&amp;agrave; 1 HTG, cao nhất l&amp;agrave; 1.000 HTG. Kết quả của Bolet dựa tr&amp;ecirc;n kết quả của giải NUMBER v&amp;agrave; WIN4 của xổ số NewYork. &lt;br&gt;&lt;br&gt;2. Bolet bao gồm 3 giải:&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* Lot1: bao gồm chữ số ở vị tr&amp;iacute; số 2 v&amp;agrave; số 3 của xổ số NUMBER. Tỉ lệ tr&amp;uacute;ng thưởng: mua 1 HTG tr&amp;uacute;ng 50 HTG&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* Lot 2: bao gồm chữ số ở vị tr&amp;iacute; số 1 v&amp;agrave; số 2 của xố số WIN4. Tỉ lệ tr&amp;uacute;ng thưởng: mua 1 HTG tr&amp;uacute;ng 20 HTG&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* Lot 3: bao gồm chữ số ở vị tr&amp;iacute; số 3 v&amp;agrave; số 4 của xổ số WIN4. Tỉ lệ tr&amp;uacute;ng thưởng: mua 1 HTG tr&amp;uacute;ng 20 HTG&lt;br&gt;&lt;br&gt;3. Thời gian tham gia mua v&amp;eacute;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Khung giờ ng&amp;agrave;y: Từ 0:00 - 14:00. Giờ trả kết quả: 14:30&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Khung giờ tối: Từ 15:00 - 20:00. Giờ trả kết quả 20:30&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt; &lt;/p&gt;</value>
+  </data>
+  <data name="max_5_tickets" xml:space="preserve">
+    <value>The max number of tickets is 5 tickets. Please check again.</value>
+  </data>
+  <data name="max_transfer_1000HTG" xml:space="preserve">
+    <value>Max transering is 10,000HTG. Please check again.</value>
+  </data>
+  <data name="mins" xml:space="preserve">
+    <value>Mins</value>
+  </data>
+  <data name="money" xml:space="preserve">
+    <value>Money</value>
+  </data>
+  <data name="money_on" xml:space="preserve">
+    <value>Transfer amount (HTG)</value>
+  </data>
+  <data name="more" xml:space="preserve">
+    <value>More</value>
+  </data>
+  <data name="must_login" xml:space="preserve">
+    <value>You have not logined yet. Please login to do this action.</value>
+  </data>
+  <data name="name" xml:space="preserve">
+    <value>Name</value>
+  </data>
+  <data name="NatCash" xml:space="preserve">
+    <value>NatCash</value>
+  </data>
+  <data name="new_pass_error" xml:space="preserve">
+    <value>Please check your new password</value>
+  </data>
+  <data name="new_york_lottery" xml:space="preserve">
+    <value>New York Lottery</value>
+  </data>
+  <data name="next_draw" xml:space="preserve">
+    <value>Next Draw</value>
+  </data>
+  <data name="note_password" xml:space="preserve">
+    <value>Note: Keep your password, and don't share with anyone.</value>
+  </data>
+  <data name="not_defined" xml:space="preserve">
+    <value>not defined</value>
+  </data>
+  <data name="not_draw" xml:space="preserve">
+    <value>Not draw</value>
+  </data>
+  <data name="not_enough_money" xml:space="preserve">
+    <value>Your money on Lottery Account has not enough to process the transaction.</value>
+  </data>
+  <data name="not_enough_money_to_exchange" xml:space="preserve">
+    <value>Not enough money to exchange.</value>
+  </data>
+  <data name="not_get_otp" xml:space="preserve">
+    <value>Didn't get OTP?</value>
+  </data>
+  <data name="not_register_natcash" xml:space="preserve">
+    <value>Receiver has not registered Natcash yet. Please check again the Natcash account.</value>
+  </data>
+  <data name="not_win" xml:space="preserve">
+    <value>Not win</value>
+  </data>
+  <data name="no_permission" xml:space="preserve">
+    <value>You have no permission to do this action</value>
+  </data>
+  <data name="number" xml:space="preserve">
+    <value>Number</value>
+  </data>
+  <data name="or" xml:space="preserve">
+    <value>OR</value>
+  </data>
+  <data name="order_code" xml:space="preserve">
+    <value>Order code</value>
+  </data>
+  <data name="or_select" xml:space="preserve">
+    <value>Or select amount (HTG)</value>
+  </data>
+  <data name="otp" xml:space="preserve">
+    <value>OTP</value>
+  </data>
+  <data name="otp_invalid" xml:space="preserve">
+    <value>OTP is invalid</value>
+  </data>
+  <data name="otp_timeout" xml:space="preserve">
+    <value>OTP timeout</value>
+  </data>
+  <data name="over_1000HTG_transfer" xml:space="preserve">
+    <value>Your order is over 5000 HTG. Please check again.</value>
+  </data>
+  <data name="over_each_exchange" xml:space="preserve">
+    <value>Your money is over the limit for each exchange.</value>
+  </data>
+  <data name="over_exchange_per_day" xml:space="preserve">
+    <value>Your money is over the limit for exchange in a day.</value>
+  </data>
+  <data name="params_invalid" xml:space="preserve">
+    <value>Params are invalid</value>
+  </data>
+  <data name="password" xml:space="preserve">
+    <value>Password</value>
+  </data>
+  <data name="password_tip" xml:space="preserve">
+    <value>Password Tips</value>
+  </data>
+  <data name="pass_tip_1" xml:space="preserve">
+    <value>1. Must be 6 digits</value>
+  </data>
+  <data name="pass_tip_2" xml:space="preserve">
+    <value>2. Password strong: from 0 - 9, should be included character (not special characters)</value>
+  </data>
+  <data name="payment" xml:space="preserve">
+    <value>Payment</value>
+  </data>
+  <data name="payment_account" xml:space="preserve">
+    <value>Payment Account</value>
+  </data>
+  <data name="payment_mothod" xml:space="preserve">
+    <value>Payment Method</value>
+  </data>
+  <data name="phone_invalid" xml:space="preserve">
+    <value>Your phone number is not valid.</value>
+  </data>
+  <data name="phone_number" xml:space="preserve">
+    <value>Phone number</value>
+  </data>
+  <data name="pin_wrong" xml:space="preserve">
+    <value>Your pin is wrong</value>
+  </data>
+  <data name="play" xml:space="preserve">
+    <value>Play</value>
+  </data>
+  <data name="price" xml:space="preserve">
+    <value>Price</value>
+  </data>
+  <data name="profile" xml:space="preserve">
+    <value>Profile</value>
+  </data>
+  <data name="promotion_code_inactive" xml:space="preserve">
+    <value>Your promotion code is not active</value>
+  </data>
+  <data name="promotion_code_invalid" xml:space="preserve">
+    <value>Your promotion code is invalid</value>
+  </data>
+  <data name="promotion_code_used" xml:space="preserve">
+    <value>Your promotion code was used.</value>
+  </data>
+  <data name="question" xml:space="preserve">
+    <value>Question</value>
+  </data>
+  <data name="receiver" xml:space="preserve">
+    <value>Receiver</value>
+  </data>
+  <data name="receiver_phone" xml:space="preserve">
+    <value>To other Natcom's number</value>
+  </data>
+  <data name="register" xml:space="preserve">
+    <value>Register</value>
+  </data>
+  <data name="reorder" xml:space="preserve">
+    <value>Re-order</value>
+  </data>
+  <data name="resend_otp" xml:space="preserve">
+    <value>Resend OTP</value>
+  </data>
+  <data name="resent_otp" xml:space="preserve">
+    <value>Resent OTP</value>
+  </data>
+  <data name="reset_after_1_minute" xml:space="preserve">
+    <value>Please reset pass after 1 minute.</value>
+  </data>
+  <data name="results" xml:space="preserve">
+    <value>Results</value>
+  </data>
+  <data name="return_home_page" xml:space="preserve">
+    <value>Return to home page</value>
+  </data>
+  <data name="review_payment" xml:space="preserve">
+    <value>Review Payment</value>
+  </data>
+  <data name="rules" xml:space="preserve">
+    <value>Rules</value>
+  </data>
+  <data name="search" xml:space="preserve">
+    <value>Search</value>
+  </data>
+  <data name="seconds" xml:space="preserve">
+    <value>Secs</value>
+  </data>
+  <data name="see_more" xml:space="preserve">
+    <value>See more</value>
+  </data>
+  <data name="select_an_account" xml:space="preserve">
+    <value>Transfer to your account</value>
+  </data>
+  <data name="sender" xml:space="preserve">
+    <value>Sender</value>
+  </data>
+  <data name="sender_phone" xml:space="preserve">
+    <value>Your number</value>
+  </data>
+  <data name="skip_to_guest" xml:space="preserve">
+    <value>Skip to login as a Guest</value>
+  </data>
+  <data name="start_using_bee_loto" xml:space="preserve">
+    <value>Start Using Bee Lotto</value>
+  </data>
+  <data name="status" xml:space="preserve">
+    <value>Status</value>
+  </data>
+  <data name="success" xml:space="preserve">
+    <value>Success</value>
+  </data>
+  <data name="system_update" xml:space="preserve">
+    <value>The system is updating. Please try again after 1 minutes.</value>
+  </data>
+  <data name="term" xml:space="preserve">
+    <value>Buying Date</value>
+  </data>
+  <data name="terms_and_conditions" xml:space="preserve">
+    <value>Terms &amp; Conditions. </value>
+  </data>
+  <data name="term_timeout" xml:space="preserve">
+    <value>This term's time is timeout. Please try again.</value>
+  </data>
+  <data name="thank_you" xml:space="preserve">
+    <value>Thank you!</value>
+  </data>
+  <data name="ticket" xml:space="preserve">
+    <value>Ticket</value>
+  </data>
+  <data name="ticket_code" xml:space="preserve">
+    <value>Ticket code</value>
+  </data>
+  <data name="ticket_invalid" xml:space="preserve">
+    <value>Your tickets are not valid</value>
+  </data>
+  <data name="time" xml:space="preserve">
+    <value>Time</value>
+  </data>
+  <data name="to" xml:space="preserve">
+    <value>To</value>
+  </data>
+  <data name="token_invalid" xml:space="preserve">
+    <value>Your token is invalid</value>
+  </data>
+  <data name="total_money" xml:space="preserve">
+    <value>Total money</value>
+  </data>
+  <data name="total_ticket" xml:space="preserve">
+    <value>Total tickets</value>
+  </data>
+  <data name="to_other_natcom_number" xml:space="preserve">
+    <value>To other Natcom number</value>
+  </data>
+  <data name="tranfer_win_money" xml:space="preserve">
+    <value>Withdraw money</value>
+  </data>
+  <data name="transfer" xml:space="preserve">
+    <value>Transfer</value>
+  </data>
+  <data name="transfer_method" xml:space="preserve">
+    <value>Transfer Method</value>
+  </data>
+  <data name="transfer_success" xml:space="preserve">
+    <value>Money has been transferred successfully!</value>
+  </data>
+  <data name="type" xml:space="preserve">
+    <value>Type</value>
+  </data>
+  <data name="update" xml:space="preserve">
+    <value>Update</value>
+  </data>
+  <data name="update_successful" xml:space="preserve">
+    <value>Update successful</value>
+  </data>
+  <data name="user_avatar_error" xml:space="preserve">
+    <value>User avatar error</value>
+  </data>
+  <data name="verify_otp" xml:space="preserve">
+    <value>Verify your account to login</value>
+  </data>
+  <data name="waiting_for_result" xml:space="preserve">
+    <value>Waiting the result</value>
+  </data>
+  <data name="wallet_not_active" xml:space="preserve">
+    <value>Your wallet is not active.</value>
+  </data>
+  <data name="wallet_not_existed" xml:space="preserve">
+    <value>Your transaction unsuccessful, you are not register a Natcash account. To register Natcash, dial *202# and follow the instruction. Thank you!</value>
+  </data>
+  <data name="welcome_to_bee_loto" xml:space="preserve">
+    <value>Welcome to Bee Lotto</value>
+  </data>
+  <data name="win" xml:space="preserve">
+    <value>Win</value>
+  </data>
+  <data name="winning_account" xml:space="preserve">
+    <value>Winning Account</value>
+  </data>
+  <data name="wrong_otp" xml:space="preserve">
+    <value>The password is incorrect. Please try again.</value>
+  </data>
+  <data name="younger_to_use" xml:space="preserve">
+    <value>Your are too younger to use this service.</value>
+  </data>
+  <data name="your_number" xml:space="preserve">
+    <value>Your number</value>
+  </data>
+  <data name="your_password_reset" xml:space="preserve">
+    <value>Your order is over 5000 HTG. Please check again.</value>
+  </data>
+  <data name="you_have_registered_Bee_loto" xml:space="preserve">
+    <value>You have registerd your Bee Lotto Account Successfully</value>
+  </data>
+  <data name="you_have_winning_number" xml:space="preserve">
+    <value>You have winning number, winning prize is:</value>
+  </data>
+</root>

+ 774 - 0
website/Languages/Lang.resx

@@ -0,0 +1,774 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="account_lock" xml:space="preserve">
+    <value>Nimewo ou a bloke. Tanpri tann jiska 5:00 pouw eseye anko.</value>
+  </data>
+  <data name="account_not_existed" xml:space="preserve">
+    <value>Your account is not existed</value>
+  </data>
+  <data name="add_more_order" xml:space="preserve">
+    <value>Jwe Plis</value>
+  </data>
+  <data name="agree_policy_1" xml:space="preserve">
+    <value>Itilize Natcom Lotto savle di ou dako ak tem yo ki nan</value>
+  </data>
+  <data name="agree_policy_2" xml:space="preserve">
+    <value>fe nou konnen lang ou pi renmen an </value>
+  </data>
+  <data name="already_have_an_account" xml:space="preserve">
+    <value>Eskew gen kont deja?</value>
+  </data>
+  <data name="amount_transfered" xml:space="preserve">
+    <value>montan wap transfere a</value>
+  </data>
+  <data name="auto_fill" xml:space="preserve">
+    <value>Rechaj otomatik</value>
+  </data>
+  <data name="basic_account" xml:space="preserve">
+    <value>Kont de Baz</value>
+  </data>
+  <data name="bee_account" xml:space="preserve">
+    <value>Kont Natcom Lotto</value>
+  </data>
+  <data name="bee_loto_des" xml:space="preserve">
+    <value>Natcom Lotto se yon Bolet, Maryaj e jwet Lotto3, rezilta NewYork ak jwet lotto Florida.   Chwazi nimewo yo epi tann yo anonse nimewo ganyan. Ou ka transfere lajan ou genyen sou kont de baz ou oswa sou kont Natcash ou. Bon chans!</value>
+  </data>
+  <data name="bee_loto_intro" xml:space="preserve">
+    <value />
+  </data>
+  <data name="bet_amount" xml:space="preserve">
+    <value>Montan wap parye a</value>
+  </data>
+  <data name="bill_order" xml:space="preserve">
+    <value>Demann Fakti</value>
+  </data>
+  <data name="bolet" xml:space="preserve">
+    <value>Bolet</value>
+  </data>
+  <data name="bolet_content" xml:space="preserve">
+    <value />
+  </data>
+  <data name="bolet_how_to_play" xml:space="preserve">
+    <value />
+  </data>
+  <data name="brought_success" xml:space="preserve">
+    <value>Tanzaksyon an fet avek sikse</value>
+  </data>
+  <data name="buy" xml:space="preserve">
+    <value>Achte</value>
+  </data>
+  <data name="buying" xml:space="preserve">
+    <value>Achte tikè</value>
+  </data>
+  <data name="buying_code_not_existed" xml:space="preserve">
+    <value>Buying code is not existed</value>
+  </data>
+  <data name="buy_bolet" xml:space="preserve">
+    <value>Achte bolet</value>
+  </data>
+  <data name="buy_lotto3" xml:space="preserve">
+    <value>Achte Lotto3</value>
+  </data>
+  <data name="buy_maryaj" xml:space="preserve">
+    <value>Achte Maryaj</value>
+  </data>
+  <data name="buy_ticket" xml:space="preserve">
+    <value>Achte Tike</value>
+  </data>
+  <data name="buy_ticket1" xml:space="preserve">
+    <value>Achte Tike</value>
+  </data>
+  <data name="buy_time" xml:space="preserve">
+    <value>le ou Achte a</value>
+  </data>
+  <data name="call" xml:space="preserve">
+    <value>Rele</value>
+  </data>
+  <data name="cancel" xml:space="preserve">
+    <value>Anile</value>
+  </data>
+  <data name="cash_agent" xml:space="preserve">
+    <value />
+  </data>
+  <data name="change_language" xml:space="preserve">
+    <value>Chanje Lang</value>
+  </data>
+  <data name="change_password" xml:space="preserve">
+    <value>Chanje modpas ou</value>
+  </data>
+  <data name="channel_buy" xml:space="preserve">
+    <value>Achte Chanel</value>
+  </data>
+  <data name="check_phone_or_password" xml:space="preserve">
+    <value>Tanpri verifye nimewo a oswa modpas la</value>
+  </data>
+  <data name="choose_your_number" xml:space="preserve">
+    <value>Chwazi yon nimewo</value>
+  </data>
+  <data name="clean_all" xml:space="preserve">
+    <value>Efase tout</value>
+  </data>
+  <data name="close" xml:space="preserve">
+    <value>Femen</value>
+  </data>
+  <data name="confirm" xml:space="preserve">
+    <value>Konfime</value>
+  </data>
+  <data name="confirm_otp" xml:space="preserve">
+    <value>Konfime OTP</value>
+  </data>
+  <data name="confirm_payment_1" xml:space="preserve">
+    <value>konfime peyman</value>
+  </data>
+  <data name="confirm_payment_2" xml:space="preserve">
+    <value> HTG pou w achte</value>
+  </data>
+  <data name="confirm_payment_3" xml:space="preserve">
+    <value>Tike, fre</value>
+  </data>
+  <data name="confirm_payment_4" xml:space="preserve">
+    <value>HTG, dat ak le</value>
+  </data>
+  <data name="confirm_payment_5" xml:space="preserve">
+    <value>Tanpri mete OTP:</value>
+  </data>
+  <data name="confirm_transaction" xml:space="preserve">
+    <value>Konfime tranzaksyon</value>
+  </data>
+  <data name="confirm_transfer_1" xml:space="preserve">
+    <value>Konfime transfe</value>
+  </data>
+  <data name="confirm_transfer_2" xml:space="preserve">
+    <value>HTG soti sou kont Lotri </value>
+  </data>
+  <data name="confirm_transfer_3" xml:space="preserve">
+    <value>Fre 0 HTG. Tanpri mete OTP:</value>
+  </data>
+  <data name="confirm_your_new_password" xml:space="preserve">
+    <value>Konfime nouvo modpas ou </value>
+  </data>
+  <data name="contact_us" xml:space="preserve">
+    <value>Kontakte nou</value>
+  </data>
+  <data name="content" xml:space="preserve">
+    <value>Kontni</value>
+  </data>
+  <data name="continue" xml:space="preserve">
+    <value>kontinye</value>
+  </data>
+  <data name="create_new_account" xml:space="preserve">
+    <value>Kreye nouvo kont</value>
+  </data>
+  <data name="creole" xml:space="preserve">
+    <value>Kreyol</value>
+  </data>
+  <data name="dateOfBirth" xml:space="preserve">
+    <value>Dat ou fet</value>
+  </data>
+  <data name="date_purchase" xml:space="preserve">
+    <value>Dat ou achte a</value>
+  </data>
+  <data name="days" xml:space="preserve">
+    <value>Jou</value>
+  </data>
+  <data name="details" xml:space="preserve">
+    <value>Detay</value>
+  </data>
+  <data name="detail_of_payment" xml:space="preserve">
+    <value>Detay sou peyman</value>
+  </data>
+  <data name="drawn" xml:space="preserve">
+    <value>Tiraj</value>
+  </data>
+  <data name="draw_date" xml:space="preserve">
+    <value>Dat tiraj </value>
+  </data>
+  <data name="draw_time" xml:space="preserve">
+    <value>Le tiraj </value>
+  </data>
+  <data name="english" xml:space="preserve">
+    <value>Angle</value>
+  </data>
+  <data name="enter_amount" xml:space="preserve">
+    <value>Antre montan an 1- 10000 HTG</value>
+  </data>
+  <data name="enter_amount1" xml:space="preserve">
+    <value>Antre montan</value>
+  </data>
+  <data name="enter_amount_1_1000" xml:space="preserve">
+    <value>Antre montan an (Maks 5000HTG/Tanzaksyon)</value>
+  </data>
+  <data name="enter_birthday" xml:space="preserve">
+    <value>Antre dat ou fet</value>
+  </data>
+  <data name="enter_digit_2" xml:space="preserve">
+    <value>Antre 2 chif (00 a 99)</value>
+  </data>
+  <data name="enter_digit_3" xml:space="preserve">
+    <value>Antre 3 chif (000 a 999)</value>
+  </data>
+  <data name="enter_digit_4" xml:space="preserve">
+    <value>Antre 4 chif (0000 a 9999)</value>
+  </data>
+  <data name="enter_money" xml:space="preserve">
+    <value>Antre montan an </value>
+  </data>
+  <data name="enter_name" xml:space="preserve">
+    <value>Antre tout non ou</value>
+  </data>
+  <data name="enter_otp" xml:space="preserve">
+    <value>Antre OTP</value>
+  </data>
+  <data name="enter_otp_to_login" xml:space="preserve">
+    <value>Tanpri antre OTP a pou w konekte</value>
+  </data>
+  <data name="enter_password" xml:space="preserve">
+    <value>Antre 6 chif modpas la</value>
+  </data>
+  <data name="enter_phone_number" xml:space="preserve">
+    <value>Antre nimewo a</value>
+  </data>
+  <data name="enter_your_new_password" xml:space="preserve">
+    <value>Antre nouvo modpas la </value>
+  </data>
+  <data name="enter_your_old_password" xml:space="preserve">
+    <value>Antre ansyen modpas la</value>
+  </data>
+  <data name="error_happened" xml:space="preserve">
+    <value>gen yon ere. Tanpri eseye anko</value>
+  </data>
+  <data name="error_happened1" xml:space="preserve">
+    <value>gen yon ere. Tanpri eseye anko</value>
+  </data>
+  <data name="fail" xml:space="preserve">
+    <value>Echek</value>
+  </data>
+  <data name="faq" xml:space="preserve">
+    <value>FAQ</value>
+  </data>
+  <data name="fee" xml:space="preserve">
+    <value>Fre</value>
+  </data>
+  <data name="fee_tranfer" xml:space="preserve">
+    <value>Fre transfe</value>
+  </data>
+  <data name="fill_password" xml:space="preserve">
+    <value>Tanpri antre modpas ou</value>
+  </data>
+  <data name="fill_phone" xml:space="preserve">
+    <value>Tanpri antre nimewo telefon ou </value>
+  </data>
+  <data name="fill_your_number" xml:space="preserve">
+    <value>Tanptre antre nimewo ou</value>
+  </data>
+  <data name="florida_lottery" xml:space="preserve">
+    <value>Lotri Florida</value>
+  </data>
+  <data name="forgot_password" xml:space="preserve">
+    <value>Ou blye Modpas la</value>
+  </data>
+  <data name="free" xml:space="preserve">
+    <value>Fre</value>
+  </data>
+  <data name="from" xml:space="preserve">
+    <value>soti nan</value>
+  </data>
+  <data name="from_your_number" xml:space="preserve">
+    <value>Soti sou nimewo ou</value>
+  </data>
+  <data name="fullname_not_valid" xml:space="preserve">
+    <value>Non konple ou mete a pa valid</value>
+  </data>
+  <data name="get_otp1" xml:space="preserve">
+    <value>Rechech OTP</value>
+  </data>
+  <data name="get_started" xml:space="preserve">
+    <value>Komanse</value>
+  </data>
+  <data name="have_chance_to_get" xml:space="preserve">
+    <value>Gen chans pou genyen</value>
+  </data>
+  <data name="history" xml:space="preserve">
+    <value>Istorik</value>
+  </data>
+  <data name="home" xml:space="preserve">
+    <value>Akey</value>
+  </data>
+  <data name="home_page" xml:space="preserve">
+    <value>Paj dakey</value>
+  </data>
+  <data name="hours" xml:space="preserve">
+    <value>Hours</value>
+  </data>
+  <data name="how_to_play" xml:space="preserve">
+    <value>Koman ou ka jwe Natcom Lotto </value>
+  </data>
+  <data name="internet_error" xml:space="preserve">
+    <value>Your internet has a problem.</value>
+  </data>
+  <data name="in_blacklist" xml:space="preserve">
+    <value>System is upgrading.</value>
+  </data>
+  <data name="in_draw_date" xml:space="preserve">
+    <value>Nimewo ou nan tiraj la dat:</value>
+  </data>
+  <data name="language" xml:space="preserve">
+    <value>Lang</value>
+  </data>
+  <data name="login" xml:space="preserve">
+    <value>Konekte</value>
+  </data>
+  <data name="login_fail_wrong_pass" xml:space="preserve">
+    <value>Koneksyon echwe paske modpas la pa bon</value>
+  </data>
+  <data name="logout" xml:space="preserve">
+    <value>Dekonekte</value>
+  </data>
+  <data name="loto_des_v2" xml:space="preserve">
+    <value>Se yon Bolet, Maryaj e jwet Lotto3, rezilta NewYork ak jwet lotto Florida.   Chwazi nimewo yo epi tann yo anonse nimewo ganyan. Ou ka transfere lajan ou genyen sou kont de baz ou oswa sou kont Natcash ou. Bon chans!</value>
+  </data>
+  <data name="lotto3" xml:space="preserve">
+    <value>Lotto3</value>
+  </data>
+  <data name="lotto3_content" xml:space="preserve">
+    <value />
+  </data>
+  <data name="maryaj" xml:space="preserve">
+    <value>Maryaj</value>
+  </data>
+  <data name="marya_content" xml:space="preserve">
+    <value />
+  </data>
+  <data name="max_5_tickets" xml:space="preserve">
+    <value>Dezole! Komand ou a depase 5 . Tanpri eseye.</value>
+  </data>
+  <data name="max_transfer_1000HTG" xml:space="preserve">
+    <value>Kantite lajan an depase limit la</value>
+  </data>
+  <data name="mins" xml:space="preserve">
+    <value>Minit</value>
+  </data>
+  <data name="money" xml:space="preserve">
+    <value>Lajan</value>
+  </data>
+  <data name="money_on" xml:space="preserve">
+    <value>Lajan sou (HTG)</value>
+  </data>
+  <data name="more" xml:space="preserve">
+    <value>Detay</value>
+  </data>
+  <data name="must_login" xml:space="preserve">
+    <value>Ou poko konekte. Tanpri konekte anko</value>
+  </data>
+  <data name="name" xml:space="preserve">
+    <value>Non ou</value>
+  </data>
+  <data name="NatCash" xml:space="preserve">
+    <value>NatCash</value>
+  </data>
+  <data name="new_pass_error" xml:space="preserve">
+    <value>Tanpri verifye nouvo modpas ou </value>
+  </data>
+  <data name="new_york_lottery" xml:space="preserve">
+    <value>Lotri New York</value>
+  </data>
+  <data name="next_draw" xml:space="preserve">
+    <value>Prochen Tiraj</value>
+  </data>
+  <data name="note_password" xml:space="preserve">
+    <value>Not: Pablye modpas ou epi pajanm patajel ak pesonn</value>
+  </data>
+  <data name="not_defined" xml:space="preserve">
+    <value>not defined</value>
+  </data>
+  <data name="not_draw" xml:space="preserve">
+    <value>An atant</value>
+  </data>
+  <data name="not_enough_money" xml:space="preserve">
+    <value>Ou pa gen ase lajan sou kont Lotri ou pou fe tranzaksyon sa.</value>
+  </data>
+  <data name="not_enough_money_to_exchange" xml:space="preserve">
+    <value>Ou pa gen ase lajan sou kont Lotri ou pou fe tranzaksyon sa.</value>
+  </data>
+  <data name="not_get_otp" xml:space="preserve">
+    <value>Ou pa jwenn OTP a?</value>
+  </data>
+  <data name="not_register_natcash" xml:space="preserve">
+    <value>Benefisye a poko gen kont Natcash. Tanpri verifye kont Natcash ou anko</value>
+  </data>
+  <data name="not_win" xml:space="preserve">
+    <value>Pedi</value>
+  </data>
+  <data name="no_permission" xml:space="preserve">
+    <value>You have no permission to do this action</value>
+  </data>
+  <data name="number" xml:space="preserve">
+    <value>Nimewo</value>
+  </data>
+  <data name="or" xml:space="preserve">
+    <value>Oswa</value>
+  </data>
+  <data name="order_code" xml:space="preserve">
+    <value>Damann kod</value>
+  </data>
+  <data name="or_select" xml:space="preserve">
+    <value>oswa Chwazi</value>
+  </data>
+  <data name="otp" xml:space="preserve">
+    <value>OTP</value>
+  </data>
+  <data name="otp_invalid" xml:space="preserve">
+    <value>Kod OTP a pa bon</value>
+  </data>
+  <data name="otp_timeout" xml:space="preserve">
+    <value>OTP timeout</value>
+  </data>
+  <data name="over_1000HTG_transfer" xml:space="preserve">
+    <value>Demann ou wa plis ke 5000HTG. Tanpri eseye anko.</value>
+  </data>
+  <data name="over_each_exchange" xml:space="preserve">
+    <value>Kantite lajan an depase limit la</value>
+  </data>
+  <data name="over_exchange_per_day" xml:space="preserve">
+    <value>Kantite Lajan an depase limit pou  jounen an</value>
+  </data>
+  <data name="params_invalid" xml:space="preserve">
+    <value>Params are invalid</value>
+  </data>
+  <data name="password" xml:space="preserve">
+    <value>Modpass</value>
+  </data>
+  <data name="password_tip" xml:space="preserve">
+    <value>Konsey sou modpas la</value>
+  </data>
+  <data name="pass_tip_1" xml:space="preserve">
+    <value>Antre 6 chif selman</value>
+  </data>
+  <data name="pass_tip_2" xml:space="preserve">
+    <value>Yon bon modpas: soti 0 - 9, dwe gen karakte ( se pa karakte espesyal)</value>
+  </data>
+  <data name="payment" xml:space="preserve">
+    <value>Peyman</value>
+  </data>
+  <data name="payment_account" xml:space="preserve">
+    <value>Kont peyman</value>
+  </data>
+  <data name="payment_mothod" xml:space="preserve">
+    <value>Metod peyman</value>
+  </data>
+  <data name="phone_invalid" xml:space="preserve">
+    <value>Nimewo telefon sa pa vaild</value>
+  </data>
+  <data name="phone_number" xml:space="preserve">
+    <value>Nimero telefon</value>
+  </data>
+  <data name="pin_wrong" xml:space="preserve">
+    <value>Your pin is wrong</value>
+  </data>
+  <data name="play" xml:space="preserve">
+    <value>Jwe</value>
+  </data>
+  <data name="price" xml:space="preserve">
+    <value>Pri</value>
+  </data>
+  <data name="profile" xml:space="preserve">
+    <value>Pwofil</value>
+  </data>
+  <data name="promotion_code_inactive" xml:space="preserve">
+    <value>Your promotion code is not active</value>
+  </data>
+  <data name="promotion_code_invalid" xml:space="preserve">
+    <value>Your promotion code is invalid</value>
+  </data>
+  <data name="promotion_code_used" xml:space="preserve">
+    <value>Your promotion code was used.</value>
+  </data>
+  <data name="question" xml:space="preserve">
+    <value>Question</value>
+  </data>
+  <data name="receiver" xml:space="preserve">
+    <value>Benefisye</value>
+  </data>
+  <data name="receiver_phone" xml:space="preserve">
+    <value>Pou lot nimewo Natcom</value>
+  </data>
+  <data name="register" xml:space="preserve">
+    <value>Anrejistre</value>
+  </data>
+  <data name="reorder" xml:space="preserve">
+    <value>Refe komann nan</value>
+  </data>
+  <data name="resend_otp" xml:space="preserve">
+    <value>Voyel anko</value>
+  </data>
+  <data name="resent_otp" xml:space="preserve">
+    <value>Voye OTP a anko</value>
+  </data>
+  <data name="reset_after_1_minute" xml:space="preserve">
+    <value>Wap jwenn OTP a Pre 1 minit.</value>
+  </data>
+  <data name="results" xml:space="preserve">
+    <value>Rezilta</value>
+  </data>
+  <data name="return_home_page" xml:space="preserve">
+    <value>Tounen nan paj dakey</value>
+  </data>
+  <data name="review_payment" xml:space="preserve">
+    <value>verifye peyman</value>
+  </data>
+  <data name="rules" xml:space="preserve">
+    <value>Regleman</value>
+  </data>
+  <data name="search" xml:space="preserve">
+    <value>Rechech </value>
+  </data>
+  <data name="seconds" xml:space="preserve">
+    <value>Segonn</value>
+  </data>
+  <data name="see_more" xml:space="preserve">
+    <value>Plis detay</value>
+  </data>
+  <data name="select_an_account" xml:space="preserve">
+    <value>Chwazi yon kont</value>
+  </data>
+  <data name="sender" xml:space="preserve">
+    <value>espedite</value>
+  </data>
+  <data name="sender_phone" xml:space="preserve">
+    <value>Soti nan nimewo ou</value>
+  </data>
+  <data name="skip_to_guest" xml:space="preserve">
+    <value>Sote pouw konekte kom envite</value>
+  </data>
+  <data name="start_using_bee_loto" xml:space="preserve">
+    <value>Komanse itilize Natcom Lotto</value>
+  </data>
+  <data name="status" xml:space="preserve">
+    <value>Estati</value>
+  </data>
+  <data name="success" xml:space="preserve">
+    <value>Sikse</value>
+  </data>
+  <data name="system_update" xml:space="preserve">
+    <value>Sistem nan ap fe mizajou</value>
+  </data>
+  <data name="term" xml:space="preserve">
+    <value>Dat ou achte a</value>
+  </data>
+  <data name="terms_and_conditions" xml:space="preserve">
+    <value>Tem ak kondisyon</value>
+  </data>
+  <data name="term_timeout" xml:space="preserve">
+    <value>This term's time is timeout. Please try again.</value>
+  </data>
+  <data name="thank_you" xml:space="preserve">
+    <value>Mesi!</value>
+  </data>
+  <data name="ticket" xml:space="preserve">
+    <value>Tike</value>
+  </data>
+  <data name="ticket_code" xml:space="preserve">
+    <value>Kod tike</value>
+  </data>
+  <data name="ticket_invalid" xml:space="preserve">
+    <value>Tike ou yo pa valid</value>
+  </data>
+  <data name="time" xml:space="preserve">
+    <value>Le</value>
+  </data>
+  <data name="to" xml:space="preserve">
+    <value>a</value>
+  </data>
+  <data name="token_invalid" xml:space="preserve">
+    <value>Your token is invalid</value>
+  </data>
+  <data name="total_money" xml:space="preserve">
+    <value>Montan Total</value>
+  </data>
+  <data name="total_ticket" xml:space="preserve">
+    <value>Tike total </value>
+  </data>
+  <data name="to_other_natcom_number" xml:space="preserve">
+    <value>bay lot nimweo Natcom</value>
+  </data>
+  <data name="tranfer_win_money" xml:space="preserve">
+    <value>Retire Lajan</value>
+  </data>
+  <data name="transfer" xml:space="preserve">
+    <value>Transfe</value>
+  </data>
+  <data name="transfer_method" xml:space="preserve">
+    <value>Metod transfe</value>
+  </data>
+  <data name="transfer_success" xml:space="preserve">
+    <value>Ou transfere lajan an ak sikse!</value>
+  </data>
+  <data name="type" xml:space="preserve">
+    <value>Tip</value>
+  </data>
+  <data name="update" xml:space="preserve">
+    <value>Mizajou</value>
+  </data>
+  <data name="update_successful" xml:space="preserve">
+    <value>Mizajou reyisi</value>
+  </data>
+  <data name="user_avatar_error" xml:space="preserve">
+    <value>Ere foto itilizate</value>
+  </data>
+  <data name="verify_otp" xml:space="preserve">
+    <value>Verifye kont wap konekte a</value>
+  </data>
+  <data name="waiting_for_result" xml:space="preserve">
+    <value>Tann rezilta</value>
+  </data>
+  <data name="wallet_not_active" xml:space="preserve">
+    <value>Your wallet is not active.</value>
+  </data>
+  <data name="wallet_not_existed" xml:space="preserve">
+    <value>Tranzaksyon an pa reyisi, oupoko kreye kont natcash ou. Pouw kreye yon kont  Natcash, fe *202# epi swiv estriksyon yo. Mesi!</value>
+  </data>
+  <data name="welcome_to_bee_loto" xml:space="preserve">
+    <value>Byenvini nan Natcom Lotto</value>
+  </data>
+  <data name="win" xml:space="preserve">
+    <value>Genyen</value>
+  </data>
+  <data name="winning_account" xml:space="preserve">
+    <value>Kont ganyan</value>
+  </data>
+  <data name="wrong_otp" xml:space="preserve">
+    <value>Modpas la pa bon. Tanpri eseye anko</value>
+  </data>
+  <data name="younger_to_use" xml:space="preserve">
+    <value>Your are too younger to use this service.</value>
+  </data>
+  <data name="your_number" xml:space="preserve">
+    <value>Nimewo ou </value>
+  </data>
+  <data name="your_password_reset" xml:space="preserve">
+    <value>Modpas la transfere sou nimewo ou. Tanpri verifye mesaj ou. Mesi!</value>
+  </data>
+  <data name="you_have_registered_Bee_loto" xml:space="preserve">
+    <value>Ou anrejistre kont Natcom Lotto a ak sikse</value>
+  </data>
+  <data name="you_have_winning_number" xml:space="preserve">
+    <value>Ou jwenn nimewo ganyan an, ou genyen:</value>
+  </data>
+</root>

+ 441 - 0
website/Languages/Question.Designer.cs

@@ -0,0 +1,441 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace LotteryWebApp.Languages {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    public class Question {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Question() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LotteryWebApp.Languages.Question", typeof(Question).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;1.1 Souk ki kont pouw gen lajan pouw kaNatcom Lotto?&lt;/p&gt;
+        ///&lt;ul&gt;
+        ///&lt;li&gt;Ou ka jwe avek kob ki sou kont, fe *5555# oswa website/application htttps://lotto.natcom.com.ht&lt;/li&gt;
+        ///&lt;li&gt;Ou ka jwe avek kob ki sou kont &amp;ndash; Natcash, fe *202#&lt;/li&gt;
+        ///&lt;/ul&gt;
+        ///&lt;p&gt;1.2. Ki pi piti kob ak ki pi plis kobo u ka achte yon Tike?&lt;/p&gt;
+        ///&lt;ul&gt;
+        ///&lt;li&gt;Minimom: 1 HTG&lt;/li&gt;
+        ///&lt;li&gt;Maksimom: 5000 HTG&lt;/li&gt;
+        ///&lt;/ul&gt;
+        ///&lt;p&gt;1.3&amp;nbsp;Rezilta Lotri NewYork&lt;/p&gt;
+        ///&lt;p&gt;&lt;span style=color: #ff0000;&quot;&gt;B&amp;ograve;L&amp;egrave;t&lt;/span&gt;&lt;/p&gt;
+        ///&lt;ul&gt;
+        ///&lt;li&gt;Achte 1 tike: *5555*1*XX*parye [rest of string was truncated]&quot;;.
+        /// </summary>
+        public static string a1 {
+            get {
+                return ResourceManager.GetString("a1", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Apre chak tiraj, system nan voye yon SMS otomatik bay chak ganyan. Moun ki pedi pap jwenn SMS sa..
+        /// </summary>
+        public static string a2 {
+            get {
+                return ResourceManager.GetString("a2", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Wap resevwa lajan ou genyen an direkteman sou kont Natcom Lotto ou kek minit apre tiraj la (normalman lika anviwon 5 minit konsa), ganyan an ka verifye kont li lel, fe *5555*5#.
+        /// </summary>
+        public static string a3 {
+            get {
+                return ResourceManager.GetString("a3", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Wi, ou ka. fel *5555*5# peze send oswa telechaje aplikasyon NatcomID a =&gt; Natcom Lotto oswa vizite sitweb sa: htttps;//lotto.natcom.com.ht.
+        /// </summary>
+        public static string a4 {
+            get {
+                return ResourceManager.GetString("a4", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;Wi, ou ka transfere lajan ou geneyen an sou kont de baz ou oswasou kont Natcash ou – Kont Natcash epi  retire lajanw kach kay nenpot Agen Natcash&lt;/p&gt;
+        ///&lt;ul&gt;
+        ///&lt;li&gt;Pouf e transfe apati  ussd, fe*5555*5# peze Send&lt;/li&gt;
+        ///&lt;li&gt;Oswa apati aplikasyon Natcom Lotto: Klike“Retire Lajan” epi  etap yo&lt;/li&gt;
+        ///&lt;li&gt;Remak: Pi plis kob ou ka retire se 40,000 HTG/jou&lt;/li&gt;
+        ///&lt;/ul&gt;.
+        /// </summary>
+        public static string a5 {
+            get {
+                return ResourceManager.GetString("a5", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Sou  sitweb: Chwazi lang la sou paj dakey la
+        ///Apati USSD: Fe *5555# epi chwazi Opsyon 8.
+        /// </summary>
+        public static string a6 {
+            get {
+                return ResourceManager.GetString("a6", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;Wi, Ouka achte Bolet, Maryaj, Lotto3 ak pou NewYork epi Lotri Florida sou kont Nacash:&lt;/p&gt;
+        ///&lt;ul&gt;
+        ///&lt;li&gt;Apati USSD: fe *202# epi Opsyon 6&lt;/li&gt;
+        ///&lt;li&gt;Sou aplikasyon Natcash la&lt;/li&gt;
+        ///&lt;/ul&gt;
+        ///&lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Not:&lt;/strong&gt; Si ou pa ko gen yon kont Natcash, ouka enskri nan Natcash lew fe *202# epi ou swiv enstriksyon yo oswa vizite nenpot showroom &amp;nbsp;Natcom oswa Ajan Natcash&lt;/p&gt;.
+        /// </summary>
+        public static string a7 {
+            get {
+                return ResourceManager.GetString("a7", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;Sipo Natcom Lotri:&lt;/p&gt;
+        ///&lt;ul&gt;
+        ///&lt;li&gt;Sevis Klyantel 111 (1htg/min)&lt;/li&gt;
+        ///&lt;li&gt;Tchat: WhatsApp +509 33 25 1111 ; Facebook: NATCOM S.A&lt;/li&gt;
+        ///&lt;li&gt;Oswa ekri nan email sa: vas.department@natcom.com.ht&lt;/a&gt;&lt;/li&gt;
+        ///&lt;/ul&gt;.
+        /// </summary>
+        public static string a8 {
+            get {
+                return ResourceManager.GetString("a8", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;9.1 Ki moun ki ka jwe Natcom Lotto?&lt;/p&gt;
+        ///&lt;p&gt;- Si yon moun poko gen 18 tan lipa gen dwa jwe Natcom Lotto&lt;/p&gt;
+        ///&lt;p&gt;9.2 Obligasyon pou tout ganyan?&lt;/p&gt;
+        ///&lt;p&gt;- Lew jwe Natcom Lotto, sa vledi ou dako ak kondisyon &amp;nbsp;Natcom yo, epi ou bay Natcom tout dwa poul itilize enffomasyon yo janl vle le lap fe pwomosyon oswa piblisite san kel pa gen pou li peye pou enfomasyon say o.&lt;/p&gt;
+        ///&lt;p&gt;9.3 Ki dat limit ou geyen pou fe yon reklamayon?&lt;/p&gt;
+        ///&lt;p&gt;- Ou gen yon dele &amp;nbsp;90 jou pou fe tout reklamasyon. Apre period sa, N [rest of string was truncated]&quot;;.
+        /// </summary>
+        public static string a9 {
+            get {
+                return ResourceManager.GetString("a9", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;&lt;strong&gt;Peyman:&lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;1&lt;sup&gt;e&lt;/sup&gt; Lo: ou genyen 50 fwa (50x) kob ou parye a&lt;/p&gt;
+        ///&lt;p&gt;2&lt;sup&gt;e&lt;/sup&gt; Lo: ou genyen 20 fwa (20x) kob ou parye a&lt;/p&gt;
+        ///&lt;p&gt;3&lt;sup&gt;e&lt;/sup&gt; Lo: ou genyen 10 fwa (10x) kob ou parye a&lt;/p&gt;
+        ///&lt;p&gt;&lt;strong&gt;Le tiraj la:&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;- Rezilta NewYork : 14:30 (Midi), 22:30 (Aswe), nimewo ganyan : NUMBERS ak Win4&lt;/p&gt;
+        ///&lt;p&gt;- Tout Tike ou jwe 30 minit avan tiraj la ap konte pou pwochen tiraj&lt;/p&gt;
+        ///&lt;p&gt;&lt;strong&gt;Ekzamp:&lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;- Rezilta NewYork pou dat: 14/03/2022 (le  [rest of string was truncated]&quot;;.
+        /// </summary>
+        public static string h1 {
+            get {
+                return ResourceManager.GetString("h1", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;&lt;strong&gt;Peyman: &lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;Genyen 1000 fwa (1000x) kob ou parye a.&lt;/p&gt;
+        ///&lt;p&gt;&lt;strong&gt;Le tiraj la:&lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;- Rezilta NewYork: 14:30 (Midi), 22:30 (Aswe)&lt;/p&gt;
+        ///NUMBERS ak Win4&lt;/p&gt;
+        ///&lt;p&gt;- Tout Tike ou jwe 30 minit avan tiraj la ap konte pou pwochen tiraj&lt;/p&gt;
+        ///&lt;p&gt;&lt;strong&gt;Nimewo ganyan:&lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;-&amp;nbsp;Konbinezon 2 nimewo ganyan nan Bolet NewYork la&lt;/p&gt;.
+        /// </summary>
+        public static string h2 {
+            get {
+                return ResourceManager.GetString("h2", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;&lt;strong&gt;Peyman: &lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;Genyen 500 fwa (500x) kob ou parye a.&lt;/p&gt;
+        ///&lt;p&gt;&lt;strong&gt;Le tiraj la:&lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;- Rezilta NewYork: 14:30 (Midi), 22:30 (Aswe)&lt;/p&gt;
+        ///NUMBERS ak Win4&lt;/p&gt;
+        ///&lt;p&gt;- Tout Tike ou jwe 30 minit avan tiraj la ap konte pou pwochen tiraj&lt;/p&gt;
+        ///&lt;p&gt;&lt;strong&gt;Nimewo ganyan:&lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;-&amp;nbsp;Tiraj NewYork: NUMBERS&lt;/p&gt;.
+        /// </summary>
+        public static string h3 {
+            get {
+                return ResourceManager.GetString("h3", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;&lt;strong&gt;Peyman:&lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;1&lt;sup&gt;e&lt;/sup&gt; Lo: ou genyen 50 fwa (50x) kob ou parye a&lt;/p&gt;
+        ///&lt;p&gt;2&lt;sup&gt;e&lt;/sup&gt; Lo: ou genyen 20 fwa (20x) kob ou parye a&lt;/p&gt;
+        ///&lt;p&gt;3&lt;sup&gt;e&lt;/sup&gt; Lo: ou genyen 10 fwa (10x) kob ou parye a&lt;/p&gt;
+        ///&lt;p&gt;&lt;strong&gt;Le tiraj la:&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;-&amp;nbsp;Rezilta Florida: 13:30 (Midi), 21:45 (Aswe), nimewo ganyan : Pick3 ak Pick4&lt;/p&gt;
+        ///NUMBERS ak Win4&lt;/p&gt;
+        ///&lt;p&gt;- Tout Tike ou jwe 30 minit avan tiraj la ap konte pou pwochen tiraj&lt;/p&gt;
+        ///&lt;p&gt;&lt;strong&gt;Ekzamp:&lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;-&amp;nbsp;Rezilta Florida pou  [rest of string was truncated]&quot;;.
+        /// </summary>
+        public static string h4 {
+            get {
+                return ResourceManager.GetString("h4", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;&lt;strong&gt;Peyman: &lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;Genyen 1000 fwa (1000x) kob ou parye a.&lt;/p&gt;
+        ///&lt;p&gt;&lt;strong&gt;Le tiraj la:&lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;- Rezilta Florida: 13:30 (Midi), 21:45 (Aswe)&lt;/p&gt;
+        ///NUMBERS ak Win4&lt;/p&gt;
+        ///&lt;p&gt;- Tout Tike ou jwe 30 minit avan tiraj la ap konte pou pwochen tiraj&lt;/p&gt;
+        ///&lt;p&gt;&lt;strong&gt;Nimewo ganyan:&lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;-&amp;nbsp;Konbinezon 2 nimewo ganyan nan Bolet Florida la&lt;/p&gt;.
+        /// </summary>
+        public static string h5 {
+            get {
+                return ResourceManager.GetString("h5", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;&lt;strong&gt;Peyman: &lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;Genyen 500 fwa (500x) kob ou parye a.&lt;/p&gt;
+        ///&lt;p&gt;&lt;strong&gt;Le tiraj la:&lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;- Rezilta Florida: 13:30 (Midi), 21:45 (Aswe)&lt;/p&gt;
+        ///NUMBERS ak Win4&lt;/p&gt;
+        ///&lt;p&gt;- Tout Tike ou jwe 30 minit avan tiraj la ap konte pou pwochen tiraj&lt;/p&gt;
+        ///&lt;p&gt;&lt;strong&gt;Nimewo ganyan:&lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;-&amp;nbsp;Tiraj Florida: PICK3&lt;/p&gt;.
+        /// </summary>
+        public static string h6 {
+            get {
+                return ResourceManager.GetString("h6", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;&lt;strong&gt;Peyman: &lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;1st: Genyen 40 fwa (40x) kob ou parye a.&lt;/p&gt;
+        ///&lt;p&gt;2nd - 11st: Genyen 4 fwa (4x) kob ou parye a.&lt;/p&gt;
+        ///&lt;p&gt;&lt;strong&gt;Le tiraj la:&lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;Rezilta chak 30 minit epi tann nan 10 minit .&lt;/p&gt;
+        ///&lt;p&gt;Egzamp : &lt;/p&gt;
+        ///&lt;p&gt;- Lè tiraj la komanse : 0:00.&lt;/p&gt;
+        ///&lt;p&gt;- Lè tiraj la fèmen : 0:30 .&lt;/p&gt;
+        ///&lt;p&gt;- - Tann tiraj sistèm nan lap disponib nan 10 minit.Kliyan an ap resevw rezilta apati 0:30:01 - 0:40:00&lt;/p&gt;
+        ///&lt;p&gt;&lt;strong&gt;Nimewo ganyan:&lt;/strong&gt;&lt;/p&gt;
+        ///&lt;p&gt;-&amp;nbsp;Tiraj sistèm lotri Natcom nan , enkli  [rest of string was truncated]&quot;;.
+        /// </summary>
+        public static string h7 {
+            get {
+                return ResourceManager.GetString("h7", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;- Jwe avek lajan ki sou kont prensipal ou: *5555# oswa sou: sitweb/app Natcom lotto&lt;/p&gt;
+        ///&lt;p&gt;- Jwe avek lajan ki sou kont Natcash ou : *202# chwazi option 6&lt;/p&gt;
+        ///&lt;p&gt;- Quick Pick:&lt;/p&gt;
+        ///&lt;p&gt;Rezilta Lotri NewYork::&lt;/p&gt;
+        ///&lt;p&gt;+ Achte 1 tike: &lt;span style=color: #ff0000;&quot;&gt;*5555*1&lt;/span&gt;*XX*parye#&amp;nbsp; Peze Send&lt;/p&gt;
+        ///&lt;p&gt;+ Achte 2-5 tike: &lt;span style=&quot;color: #ff0000;&quot;&gt;*5555*1&lt;/span&gt;*XX* paryaj 1*XX* paryaj 2*XX* paryaj 3# Peze&amp;nbsp; Send&lt;/p&gt;
+        ///&lt;p&gt;Rezilta Lotri Florida:&lt;/p&gt;
+        ///&lt;p&gt;+ Achte 1 tike: &lt;span style=&quot;color: #ff0000;&quot;&gt; [rest of string was truncated]&quot;;.
+        /// </summary>
+        public static string p1 {
+            get {
+                return ResourceManager.GetString("p1", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;- Jwe avek lajan ki sou kont prensipal ou: *5555# oswa sou: sitweb/app Natcom lotto&lt;/p&gt;
+        ///&lt;p&gt;- Jwe avek lajan ki sou kont Natcash ou : *202# chwazi option 6&lt;/p&gt;
+        ///&lt;p&gt;- Quick Pick:&lt;/p&gt;
+        ///&lt;p&gt;Rezilta Lotri NewYork::&lt;/p&gt;
+        ///&lt;p&gt;+ Achte 1 tike:&amp;nbsp;&lt;span style=color: #ff0000;&quot;&gt;*5555*1&lt;/span&gt;*XXXX*parye#&amp;nbsp; Peze Send&lt;/p&gt;
+        ///&lt;p&gt;+ Achte 2-5 tike:&amp;nbsp;&lt;span style=&quot;color: #ff0000;&quot;&gt;*5555*1&lt;/span&gt;*XXXX* paryaj 1*XXXX* paryaj 2*XXXX* paryaj 3# Peze&amp;nbsp; Send&lt;/p&gt;
+        ///&lt;p&gt;&amp;nbsp;&lt;/p&gt;
+        ///&lt;p&gt;Rezilta Lotri Florida:&lt;/p&gt;
+        ///&lt;p&gt;+ Achte 1 tike [rest of string was truncated]&quot;;.
+        /// </summary>
+        public static string p2 {
+            get {
+                return ResourceManager.GetString("p2", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;- Jwe avek lajan ki sou kont prensipal ou: *5555# oswa sou: sitweb/app Natcom lotto&lt;/p&gt;
+        ///&lt;p&gt;- Jwe avek lajan ki sou kont Natcash ou : *202# chwazi option 6&lt;/p&gt;
+        ///&lt;p&gt;- Quick Pick:&lt;/p&gt;
+        ///&lt;p&gt;Rezilta Lotri NewYork::&lt;/p&gt;
+        ///&lt;p&gt;+ Achte 1 tike:&amp;nbsp;&lt;span style=color: #ff0000;&quot;&gt;*5555*1&lt;/span&gt;*XXX*parye#&amp;nbsp; Peze Send&lt;/p&gt;
+        ///&lt;p&gt;+ Achte 2-5 tike:&amp;nbsp;&lt;span style=&quot;color: #ff0000;&quot;&gt;*5555*1&lt;/span&gt;*XXX* paryaj 1*XXX* paryaj 2*XXX* paryaj 3# Peze&amp;nbsp; Send&lt;/p&gt;
+        ///&lt;p&gt;Rezilta Lotri Florida:&lt;/p&gt;
+        ///&lt;p&gt;+ Achte 1 tike: &lt;span style=&quot;col [rest of string was truncated]&quot;;.
+        /// </summary>
+        public static string p3 {
+            get {
+                return ResourceManager.GetString("p3", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;- Jwe avek lajan ki sou kont prensipal ou: *5555# oswa sou: sitweb/app Natcom lotto&lt;/p&gt;
+        ///&lt;p&gt;- Quick Pick:&lt;/p&gt;
+        ///&lt;p&gt;Rezilta Lotri Boulchans::&lt;/p&gt;
+        ///&lt;p&gt;+ Achte 1 tike:&amp;nbsp;&lt;span style=color: #ff0000;&quot;&gt;*5555*3&lt;/span&gt;*XX*parye#&amp;nbsp; Peze Send&lt;/p&gt;
+        ///&lt;p&gt;+ Achte 2-5 tike:&amp;nbsp;&lt;span style=&quot;color: #ff0000;&quot;&gt;*5555*3&lt;/span&gt;*XX* paryaj 1*XX* paryaj 2*XX* paryaj 3# Peze&amp;nbsp; Send&lt;/p&gt;
+        ///&lt;p&gt;&lt;strong&gt;Remak:&lt;/strong&gt; X soti 0-9 ak&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;nbsp;2 chif&lt;/span&gt;&lt;/p&gt;
+        ///&lt;p&gt;&amp;nbsp;&lt;/p&gt;.
+        /// </summary>
+        public static string p4 {
+            get {
+                return ResourceManager.GetString("p4", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;&lt;strong&gt;1. Kijan pou w tike, Quick pick e tout sot de tike (2-5 tike an menm tan)?&lt;/strong&gt;&lt;/p&gt;.
+        /// </summary>
+        public static string q1 {
+            get {
+                return ResourceManager.GetString("q1", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;&lt;strong&gt;2. Kijan ouka konen siw genyen ak siw pedi?&lt;/strong&gt;&lt;/p&gt;.
+        /// </summary>
+        public static string q2 {
+            get {
+                return ResourceManager.GetString("q2", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;&lt;strong&gt;3. Kijan wap resevwa kob ou genyen an ?&lt;/strong&gt;&lt;/p&gt;.
+        /// </summary>
+        public static string q3 {
+            get {
+                return ResourceManager.GetString("q3", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;&lt;strong&gt;4. Kijan ou ka verifye lajan ou sot genyen an ?&lt;/strong&gt;&lt;/p&gt;.
+        /// </summary>
+        public static string q4 {
+            get {
+                return ResourceManager.GetString("q4", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;&lt;strong&gt;5. Kijan ou ka retire lajan ou fin genyen an ?&lt;/strong&gt;&lt;/p&gt;.
+        /// </summary>
+        public static string q5 {
+            get {
+                return ResourceManager.GetString("q5", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;&lt;strong&gt;6. Kijan ou ka chanje lang la?&lt;/strong&gt;&lt;/p&gt;.
+        /// </summary>
+        public static string q6 {
+            get {
+                return ResourceManager.GetString("q6", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;&lt;strong&gt;7. Kijan ouka jwe Natcom Lotto sou kont Natcash ou?&lt;/strong&gt;&lt;/p&gt;.
+        /// </summary>
+        public static string q7 {
+            get {
+                return ResourceManager.GetString("q7", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;&lt;strong&gt;8. Ou bezwen yon ed anliy?&lt;/strong&gt;&lt;/p&gt;.
+        /// </summary>
+        public static string q8 {
+            get {
+                return ResourceManager.GetString("q8", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;p&gt;&lt;strong&gt;9. Definisyon &amp; Condisyon Natcom Lotto&lt;/strong&gt;&lt;/p&gt;.
+        /// </summary>
+        public static string q9 {
+            get {
+                return ResourceManager.GetString("q9", resourceCulture);
+            }
+        }
+    }
+}

+ 369 - 0
website/Languages/Question.fr.resx

@@ -0,0 +1,369 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="a1" xml:space="preserve">
+    <value>&lt;p&gt;1.1 Which money account I can play Natcom Lotto?&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Play via mobile account, dial *5555# or website/application htttps://lotto.natcom.com.ht&lt;/li&gt;
+&lt;li&gt;Play via Mobile money &amp;ndash; Natcash, dial *202#&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;1.2 What is minimum and maximum you can buy a Ticket?&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Maximum: 5000 HTG&lt;/li&gt;
+&lt;li&gt;Minimum: 1 HTG&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;1.3 NewYork Lottery results:&lt;/p&gt;
+&lt;p&gt;&lt;span style=color: #ff0000;"&gt;B&amp;ograve;L&amp;egrave;t&lt;/span&gt;&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Buy 1 ticket: *5555*1*XX*Bet# Send&lt;/li&gt;
+&lt;li&gt;Buy 2-5 tickets: *5555*1*XX*Bet1*XX*Bet2*XX*Bet3# Send&amp;nbsp;&lt;em&gt;(X from 0-9 and 2 digits)&lt;/em&gt;&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;&lt;span style="color: #ff0000;"&gt;Maryaj:&lt;/span&gt;&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Buy 1 ticket: *5555*1*XXXX*Bet#&lt;/li&gt;
+&lt;li&gt;Buy 2-5 tickets: *5555*1*XXXX*Bet1*XXXX*Bet2*XXXX*Bet3# Send&amp;nbsp;&lt;em&gt;(X from 0-9 and 4 digits)&lt;/em&gt;&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;&lt;span style="color: #ff0000;"&gt;Lotto3:&lt;/span&gt;&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Buy 1 ticket: *5555*1*XXX*Bet#&lt;/li&gt;
+&lt;li&gt;Buy 2-5 tickets: *5555*1*XXX*Bet1*XXX*Bet2*XXX*Bet3# Send&amp;nbsp;&lt;em&gt;(X from 0-9 and 3 digits)&lt;/em&gt;&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;1.4 Florida Lottery results&lt;/p&gt;
+&lt;p&gt;&lt;span style="color: #0000ff;"&gt;B&amp;ograve;L&amp;egrave;t&lt;/span&gt;&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Buy 1 ticket: *5555*2*XX*Bet#&lt;/li&gt;
+&lt;li&gt;Buy 2-5 tickets: *5555*2*XX*Bet1*XX*Bet2*XX*Bet3&lt;strong&gt;#&lt;/strong&gt; Send&amp;nbsp;&lt;em&gt;(X from 0-9 and 2 digits)&lt;/em&gt;&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;Maryaj:&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Buy 1 ticket: *5555*2*XXXX*Bet#&lt;/li&gt;
+&lt;li&gt;Buy 2-5 tickets: *5555*2*XXXX*Bet1*XXXX*Bet2*XXXX*Bet3# Send&lt;em&gt;(X from 0-9 and 4 digits)&lt;/em&gt;&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;&lt;span style="color: #0000ff;"&gt;Lotto3:&lt;/span&gt;&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Buy 1 ticket: *5555*2*XXX*Bet# Send&lt;/li&gt;
+&lt;li&gt;Buy 2-5 tickets: *5555*2*XXX*Bet1*XXX*Bet2*XXX*Bet3# Send&amp;nbsp;&lt;em&gt;(X from 0-9 and 3 digits)&lt;/em&gt;&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;1.5 Boulchans Lottery results&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Buy 1 ticket: *5555*3*XX*Bet#&lt;/li&gt;
+&lt;li&gt;Buy 2-5 tickets: *5555*3*XX*Bet1*XX*Bet2*XX*Bet3&lt;strong&gt;#&lt;/strong&gt; Send&amp;nbsp;&lt;em&gt;(X from 0-9 and 2 digits)&lt;/em&gt;&lt;/li&gt;
+&lt;/ul&gt;</value>
+  </data>
+  <data name="a2" xml:space="preserve">
+    <value>After each draw, the system automatically sends an SMS notification to each of the winners. Players without winning tickets WILL NOT RECEIVE SMS.</value>
+  </data>
+  <data name="a3" xml:space="preserve">
+    <value>The winning money will be sent directly to Natcom Lotto account after few minutes from drawing time (in normal case within 5 minutes), Winners can check the amount, by dialing *5555*5#</value>
+  </data>
+  <data name="a4" xml:space="preserve">
+    <value>Yes, you can. Dial *5555*5# send or download NatcomID application =&gt;  Natcom Lotto or visit website: htttps://lotto.natcom.com.ht</value>
+  </data>
+  <data name="a5" xml:space="preserve">
+    <value>&lt;p&gt;Yes, you can transfer your winning amount to your mobile account and your mobile wallet &amp;ndash; Natcash account and withdraw cash at any Natcash agents&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;To transfer via ussd, dial *5555*5# Send&lt;/li&gt;
+&lt;li&gt;Or via Natcom Lotto application: Click &amp;ldquo;Withdraw Money&amp;rdquo; and follow steps&lt;/li&gt;
+&lt;li&gt;Note: You can withdraw maximum 40,000 HTG per day&lt;/li&gt;
+&lt;/ul&gt;</value>
+  </data>
+  <data name="a6" xml:space="preserve">
+    <value>On website: Select the language on login Page.
+On USSD: Dial *5555# and choose the Option 8.</value>
+  </data>
+  <data name="a7" xml:space="preserve">
+    <value>&lt;p&gt;Yes, you can buy Bolet, Maryaj, Lotto3 for both NewYork and Florida Lottery on Nacash account:&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Via USSD: Dial *202# and Option 6&lt;/li&gt;
+&lt;li&gt;Via Natcash application&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Note:&lt;/strong&gt; If you are not a Natcash account, you can register Natcash by dialing *202# and follow instruction or visit any Natcom showroom and Agents&lt;/p&gt;</value>
+  </data>
+  <data name="a8" xml:space="preserve">
+    <value>&lt;p&gt;Natcom Lottery support:&lt;/p&gt;
+&lt;ul&gt;
+&lt;ul&gt;
+&lt;li&gt;Call a callcenter agent 111 (1htg/min)&lt;/li&gt;
+&lt;li&gt;Chat: WhatsApp +509 33 25 1111 ; Facebook: NATCOM S.A&lt;/li&gt;
+&lt;li&gt;Or email to:vas.department@natcom.com.ht&lt;/li&gt;
+&lt;/ul&gt;
+&lt;/ul&gt;</value>
+  </data>
+  <data name="a9" xml:space="preserve">
+    <value>&lt;p&gt;9.1 Who can play Natcom Lotto?&lt;/p&gt;
+&lt;p&gt;- Anyone under the age of 18 is not allowed to play Natcom Lotto games&lt;/p&gt;
+&lt;p&gt;9.2 Winner&amp;rsquo;s obligations?&lt;/p&gt;
+&lt;p&gt;- By purchasing games from Natcom Lotto, the Player accepts that Natcom, without prior notice, may, as of right, use his name and image for promotional purposes during any advertising campaign. Winner, without any other compensation to be paid to him for this purpose.&lt;/p&gt;
+&lt;p&gt;9.3 Ticket claim deadline?&lt;/p&gt;
+&lt;p&gt;- All prizes must be claimed within 90 days of the draw date. After this period, Natcom Lotto declines all responsibility for the payment of this amount, the amount of which will be added to the Grand Prizes. In such a case, the Player agrees to be deprived of all rights relating to this winning ticket.&lt;/p&gt;</value>
+  </data>
+  <data name="h1" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;Payout:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;1&lt;sup&gt;st&lt;/sup&gt; Lot: win 50 times (50x) your bet&lt;/p&gt;
+&lt;p&gt;2&lt;sup&gt;nd&lt;/sup&gt; Lot: win 20 times (20x) your bet&lt;/p&gt;
+&lt;p&gt;3&lt;sup&gt;rd&lt;/sup&gt; Lot: Win 10 times (10x) your bet&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Draw time:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;- NewYork result: 14:30 (Midday), 22:30 (Evening), winning numbers: NUMBERS and Win4&lt;/p&gt;
+&lt;p&gt;- Note: Tickets will move to next circle 30’ before each draw time&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;- NewYork results on 14/03/2022 (Drawing time: 14:30):&lt;/p&gt;
+&lt;ul style="list-style-type: square;"&gt;
+&lt;li&gt;Drawing: NUMBERS: 139; Win4: 3505&lt;/li&gt;
+&lt;li&gt;B&amp;ograve;l&amp;egrave;t NewYork winning numbers: 1&lt;sup&gt;st&lt;/sup&gt; Lot: 39; 2&lt;sup&gt;nd&lt;/sup&gt; Lot: 35; 3&lt;sup&gt;rd&lt;/sup&gt; Lot: 05&lt;/li&gt;
+&lt;/ul&gt;</value>
+  </data>
+  <data name="h2" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;Payout: &lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;Win 1000 times (1000x) your bet&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Draw time:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;- NewYork result: 14:30 (Midday), 22:30 (Evening)&lt;/p&gt;
+&lt;p&gt;- Note: Tickets will move to next circle 30’ before each draw time&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Winning numbers:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;- Combined 2 pair winning numbers of B&amp;ograve;l&amp;egrave;t NewYork&lt;/p&gt;</value>
+  </data>
+  <data name="h3" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;Payout: &lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;Win 500 times (500x) your bet&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Draw time:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;- NewYork result: 14:30 (Midday), 22:30 (Evening)&lt;/p&gt;
+&lt;p&gt;- Note: Tickets will move to next circle 30’ before each draw time&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Winning numbers:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;-&amp;nbsp;NewYork drawing: NUMBERS&lt;/p&gt;</value>
+  </data>
+  <data name="h4" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;Payout:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;1&lt;sup&gt;st&lt;/sup&gt; Lot: win 50 times (50x) your bet&lt;/p&gt;
+&lt;p&gt;2&lt;sup&gt;nd&lt;/sup&gt; Lot: win 20 times (20x) your bet&lt;/p&gt;
+&lt;p&gt;3&lt;sup&gt;rd&lt;/sup&gt; Lot: Win 10 times (10x) your bet&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Draw time:&lt;/strong&gt;&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Florida result: 13:30 (Midday), 21:45 (Evening), winning&amp;nbsp;numbers: Pick3 and Pick4&lt;/li&gt;
+&lt;li&gt;Note: Tickets will move to next circle 30’ before each draw time&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;-&amp;nbsp;Florida results on 14/03/2022 (Drawing time: 13:30):&lt;/p&gt;
+&lt;ul style=list-style-type: square;"&gt;
+&lt;li&gt;Drawing: PICK3: 462; PICK4: 0453&lt;/li&gt;
+&lt;li&gt;B&amp;ograve;l&amp;egrave;t Florida winning numbers: 1&lt;sup&gt;st&lt;/sup&gt; Lot: 62; 2&lt;sup&gt;nd&lt;/sup&gt; Lot: 04; 3&lt;sup&gt;rd&lt;/sup&gt; Lot: 53&lt;/li&gt;
+&lt;/ul&gt;</value>
+  </data>
+  <data name="h5" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;Payout: &lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;Win 1000 times (1000x) your bet&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Draw time:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;-&amp;nbsp;Florida result: 13:30 (Midday), 21:45 (Evening)
+&lt;/p&gt;
+&lt;p&gt;- Note: Tickets will move to next circle 30’ before each draw time&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Winning numbers:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;- Combined 2 pair winning numbers of B&amp;ograve;l&amp;egrave;t Florida&lt;/p&gt;</value>
+  </data>
+  <data name="h6" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;Payout: &lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;Win 500 times (500x) your bet&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Draw time:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;- Florida result: 13:30 (Midday), 21:45 (Evening)&lt;/p&gt;
+&lt;p&gt;- Note: Tickets will move to next circle 30’ before each draw time&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Winning numbers:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;-&amp;nbsp;Florida drawing: PICK3&lt;/p&gt;</value>
+  </data>
+  <data name="h7" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;Payout: &lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;1st prize: Win 40 times (40x) your bet&lt;/p&gt;
+&lt;p&gt;2n prize - 11st prize: Win 4 times (4x) your bet&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Draw time:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;- Result each 30 minute and waiting the result in 10 minutes&lt;/p&gt;
+&lt;p&gt;Example:&lt;/p&gt;
+&lt;p&gt;- Begin draw time: 0:00&lt;/p&gt;
+&lt;p&gt;- Close draw time: 0:30&lt;/p&gt;
+&lt;p&gt;- Waiting the system draw lotto and send the result in 10 minutes. Customer will receive the result from 0:30:01 – 0:40:00&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Winning numbers:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;-&amp;nbsp;Draw by Natcom Lotto system, include 2 numbers.&lt;/p&gt;</value>
+  </data>
+  <data name="p1" xml:space="preserve">
+    <value>&lt;p&gt;- Play with your Natcom balance: *5555# and web/app Natcom lotto&lt;/p&gt;
+&lt;p&gt;- Play with your Natcash account: *202# and option 6&lt;/p&gt;
+&lt;p&gt;- Quick Pick:&lt;/p&gt;
+&lt;p&gt;NewYork Lottery results:&lt;/p&gt;
+&lt;p&gt;+ Buy 1 ticket: &lt;span style=color: #ff0000;"&gt;*5555*1&lt;/span&gt;*XX*Bet# Send&lt;/p&gt;
+&lt;p&gt;+ Buy 2-5 tickets: &lt;span style="color: #ff0000;"&gt;*5555*1&lt;/span&gt;*XX*Bet1*XX*Bet2*XX*Bet3# Send&lt;/p&gt;
+&lt;p&gt;Florida Lottery results:&lt;/p&gt;
+&lt;p&gt;+ Buy 1 ticket: &lt;span style="color: #ff0000;"&gt;*5555*2&lt;/span&gt;*XX*Bet# Send&lt;/p&gt;
+&lt;p&gt;+ Buy 2-5 tickets: *5555*2*XX*Bet1*XX*Bet2*XX*Bet3# Send&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; X from 0-9 and &lt;span style="color: #ff0000;"&gt;2 digits&lt;/span&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="p2" xml:space="preserve">
+    <value>&lt;p&gt;- Play with your Natcom balance: *5555# and web/app Natcom lotto&lt;/p&gt;
+&lt;p&gt;- Play with your Natcash account: *202# and option 6&lt;/p&gt;
+&lt;p&gt;- Quick Pick:&lt;/p&gt;
+&lt;p&gt;NewYork Lottery results:&lt;/p&gt;
+&lt;p&gt;+ Buy 1 ticket:&lt;span style=color: #ff0000;"&gt; *5555*1&lt;/span&gt;*XXXX*Bet# Send&lt;/p&gt;
+&lt;p&gt;+ Buy 2-5 tickets: &lt;span style="color: #ff0000;"&gt;*5555*1&lt;/span&gt;*XXXX*Bet1*XXXX*Bet2*XXXX*Bet3# Send&lt;/p&gt;
+&lt;p&gt;Florida Lottery results:&lt;/p&gt;
+&lt;p&gt;+ Buy 1 ticket: &lt;span style="color: #ff0000;"&gt;*5555*2&lt;/span&gt;*XXXX*Bet# Send&lt;/p&gt;
+&lt;p&gt;+ Buy 2-5 tickets: &lt;span style="color: #ff0000;"&gt;*5555*2&lt;/span&gt;*XXXX*Bet1*XXXX*Bet2*XXXX*Bet3# Send&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; X from 0-9 and &lt;span style="color: #ff0000;"&gt;4 digits&lt;/span&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="p3" xml:space="preserve">
+    <value>&lt;p&gt;- Play with your Natcom balance: *5555# and web/app Natcom lotto&lt;/p&gt;
+&lt;p&gt;- Play with your Natcash account: *202# and option 6&lt;/p&gt;
+&lt;p&gt;- Quick Pick:&lt;/p&gt;
+&lt;p&gt;NewYork Lottery results:&lt;/p&gt;
+&lt;p&gt;+ Buy 1 ticket:&lt;span style=color: #ff0000;"&gt; *5555*1&lt;/span&gt;*XXX*Bet# Send&lt;/p&gt;
+&lt;p&gt;+ Buy 2-5 tickets: &lt;span style="color: #ff0000;"&gt;*5555*1&lt;/span&gt;*XXX*Bet1*XXX*Bet2*XXX*Bet3# Send&lt;/p&gt;
+&lt;p&gt;Florida Lottery results:&lt;/p&gt;
+&lt;p&gt;+ Buy 1 ticket: &lt;span style="color: #ff0000;"&gt;*5555*2&lt;/span&gt;*XXX*Bet# Send&lt;/p&gt;
+&lt;p&gt;+ Buy 2-5 tickets: &lt;span style="color: #ff0000;"&gt;*5555*2&lt;/span&gt;*XXX*Bet1*XXX*Bet2*XXX*Bet3# Send&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; X from 0-9 and &lt;span style="color: #ff0000;"&gt;3 digits&lt;/span&gt;&lt;/p&gt;"</value>
+  </data>
+  <data name="p4" xml:space="preserve">
+    <value>&lt;p&gt;- Play with your Natcom balance: *5555# and web/app Natcom lotto&lt;/p&gt;
+&lt;p&gt;- Quick Pick:&lt;/p&gt;
+&lt;p&gt;Boulchans lottery results:&lt;/p&gt;
+&lt;p&gt;+ Buy 1 ticket:&lt;span style=color: #ff0000;"&gt; *5555*3&lt;/span&gt;*XX*Bet# Send&lt;/p&gt;
+&lt;p&gt;+ Buy 2-5 tickets: &lt;span style="color: #ff0000;"&gt;*5555*3&lt;/span&gt;*XX*Bet1*XX*Bet2*XX*Bet3# Send&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; X from 0-9 and &lt;span style="color: #ff0000;"&gt;2 digits&lt;/span&gt;&lt;/p</value>
+  </data>
+  <data name="q1" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;1. How to buy tickets, Quick pick and multil tickets (2-5 tickets same time)?&lt;/strong&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="q2" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;2. How do I know if my ticket is a winner or a loser?&lt;/strong&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="q3" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;3. How I can receive the winning money?&lt;/strong&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="q4" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;4. How I can check my winning money?&lt;/strong&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="q5" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;5. How I can withdraw the winning money?&lt;/strong&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="q6" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;6. How to change the language?&lt;/strong&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="q7" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;7. How to Play Natcom Lotto on Natcash account?&lt;/strong&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="q8" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;8. You need a online support?&lt;/strong&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="q9" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;9. Definitions &amp; Conditions about Natcom Lotto&lt;/strong&gt;&lt;/p&gt;</value>
+  </data>
+</root>

+ 373 - 0
website/Languages/Question.resx

@@ -0,0 +1,373 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="a1" xml:space="preserve">
+    <value>&lt;p&gt;1.1 Souk ki kont pouw gen lajan pouw kaNatcom Lotto?&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Ou ka jwe avek kob ki sou kont, fe *5555# oswa website/application htttps://lotto.natcom.com.ht&lt;/li&gt;
+&lt;li&gt;Ou ka jwe avek kob ki sou kont &amp;ndash; Natcash, fe *202#&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;1.2. Ki pi piti kob ak ki pi plis kobo u ka achte yon Tike?&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Minimom: 1 HTG&lt;/li&gt;
+&lt;li&gt;Maksimom: 5000 HTG&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;1.3&amp;nbsp;Rezilta Lotri NewYork&lt;/p&gt;
+&lt;p&gt;&lt;span style=color: #ff0000;"&gt;B&amp;ograve;L&amp;egrave;t&lt;/span&gt;&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Achte 1 tike: *5555*1*XX*parye# &amp;nbsp;Peze Send&lt;/li&gt;
+&lt;li&gt;Achte 2-5 tike: *5555*1*XX* paryaj 1*XX* paryaj 2*XX* paryaj 3# Peze Send&amp;nbsp;&lt;em&gt;(X soti0-9 ak 2 chif)&lt;/em&gt;&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;&lt;span style="color: #ff0000;"&gt;Maryaj:&lt;/span&gt;&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Buy 1 ticket: *5555*1*XXXX* parye #&lt;/li&gt;
+&lt;li&gt;Buy 2-5 tickets: *5555*1*XXXX* paryaj 1*XXXX* paryaj 2*XXXX* paryaj 3# Peze Send&amp;nbsp;&lt;em&gt;(X soti &amp;nbsp;0-9 ak 4 chif)&lt;/em&gt;&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;&lt;span style="color: #ff0000;"&gt;Lotto3:&lt;/span&gt;&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Achte 1 tike: *5555*1*XXX* paryaj #&lt;/li&gt;
+&lt;li&gt;Achte 2-5 tike: *5555*1*XXX* paryaj 1*XXX* paryaj 2*XXX* paryaj 3# Peze Send&lt;em&gt;(X soti 0-9 ak 3 chif)&lt;/em&gt;&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;1.4 Rezilta Lotri Florida&lt;/p&gt;
+&lt;p&gt;&lt;span style="color: #0000ff;"&gt;B&amp;ograve;L&amp;egrave;t&lt;/span&gt;&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Achte 1 tike: *5555*2*XX* paryaj # Peze Send&lt;/li&gt;
+&lt;li&gt;Achte 2-5 tike: *5555*2*XX* paryaj 1*XX* paryaj 2*XX* paryaj 3&lt;strong&gt;#&lt;/strong&gt; Peze Send&amp;nbsp;&lt;em&gt;(X Soti 0-9 ak 3 chif)&lt;/em&gt;&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;&lt;span style="color: #0000ff;"&gt;Maryaj&lt;/span&gt;&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Achte 1 ticket: *5555*2*XXXX* paryaj #&lt;/li&gt;
+&lt;li&gt;Achte 2-5 tike: *5555*2*XXXX* paryaj 1*XXXX* paryaj 2*XXXX* paryaj 3# Peze Send&amp;nbsp;&lt;em&gt;(X soti&amp;nbsp; 0-9 ak 4 chif)&lt;/em&gt;&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;&lt;span style="color: #0000ff;"&gt;Lotto3&lt;/span&gt;&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Achte 1 tike: *5555*2*XXX* paryaj # Peze Send&lt;/li&gt;
+&lt;li&gt;Achte 2-5 tike: *5555*2*XXX* paryaj 1*XXX* paryaj 2*XXX* paryaj 3# Peze Send&amp;nbsp;&lt;em&gt;(X soti 0-9 ak 3 chif)&lt;/em&gt;&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;1.5 Rezilta Lotri Boulchans&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Achte 1 tike: *5555*3*XX* paryaj # Peze Send&lt;/li&gt;
+&lt;li&gt;Achte 2-5 tike: *5555*3*XX* paryaj 1*XX* paryaj 2*XX* paryaj 3# Peze Send&amp;nbsp;&lt;em&gt;(X soti 0-9 ak 2 chif)&lt;/em&gt;&lt;/li&gt;
+&lt;/ul&gt;</value>
+  </data>
+  <data name="a2" xml:space="preserve">
+    <value>Apre chak tiraj, system nan voye yon SMS otomatik bay chak ganyan. Moun ki pedi pap jwenn SMS sa.</value>
+  </data>
+  <data name="a3" xml:space="preserve">
+    <value>Wap resevwa lajan ou genyen an direkteman sou kont Natcom Lotto ou kek minit apre tiraj la (normalman lika anviwon 5 minit konsa), ganyan an ka verifye kont li lel, fe *5555*5#</value>
+  </data>
+  <data name="a4" xml:space="preserve">
+    <value>Wi, ou ka. fel *5555*5# peze send oswa telechaje aplikasyon NatcomID a =&gt; Natcom Lotto oswa vizite sitweb sa: htttps;//lotto.natcom.com.ht</value>
+  </data>
+  <data name="a5" xml:space="preserve">
+    <value>&lt;p&gt;Wi, ou ka transfere lajan ou geneyen an sou kont de baz ou oswasou kont Natcash ou – Kont Natcash epi  retire lajanw kach kay nenpot Agen Natcash&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Pouf e transfe apati  ussd, fe*5555*5# peze Send&lt;/li&gt;
+&lt;li&gt;Oswa apati aplikasyon Natcom Lotto: Klike“Retire Lajan” epi  etap yo&lt;/li&gt;
+&lt;li&gt;Remak: Pi plis kob ou ka retire se 40,000 HTG/jou&lt;/li&gt;
+&lt;/ul&gt;</value>
+  </data>
+  <data name="a6" xml:space="preserve">
+    <value>Sou  sitweb: Chwazi lang la sou paj dakey la
+Apati USSD: Fe *5555# epi chwazi Opsyon 8</value>
+  </data>
+  <data name="a7" xml:space="preserve">
+    <value>&lt;p&gt;Wi, Ouka achte Bolet, Maryaj, Lotto3 ak pou NewYork epi Lotri Florida sou kont Nacash:&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Apati USSD: fe *202# epi Opsyon 6&lt;/li&gt;
+&lt;li&gt;Sou aplikasyon Natcash la&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Not:&lt;/strong&gt; Si ou pa ko gen yon kont Natcash, ouka enskri nan Natcash lew fe *202# epi ou swiv enstriksyon yo oswa vizite nenpot showroom &amp;nbsp;Natcom oswa Ajan Natcash&lt;/p&gt;</value>
+  </data>
+  <data name="a8" xml:space="preserve">
+    <value>&lt;p&gt;Sipo Natcom Lotri:&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Sevis Klyantel 111 (1htg/min)&lt;/li&gt;
+&lt;li&gt;Tchat: WhatsApp +509 33 25 1111 ; Facebook: NATCOM S.A&lt;/li&gt;
+&lt;li&gt;Oswa ekri nan email sa: vas.department@natcom.com.ht&lt;/a&gt;&lt;/li&gt;
+&lt;/ul&gt;</value>
+  </data>
+  <data name="a9" xml:space="preserve">
+    <value>&lt;p&gt;9.1 Ki moun ki ka jwe Natcom Lotto?&lt;/p&gt;
+&lt;p&gt;- Si yon moun poko gen 18 tan lipa gen dwa jwe Natcom Lotto&lt;/p&gt;
+&lt;p&gt;9.2 Obligasyon pou tout ganyan?&lt;/p&gt;
+&lt;p&gt;- Lew jwe Natcom Lotto, sa vledi ou dako ak kondisyon &amp;nbsp;Natcom yo, epi ou bay Natcom tout dwa poul itilize enffomasyon yo janl vle le lap fe pwomosyon oswa piblisite san kel pa gen pou li peye pou enfomasyon say o.&lt;/p&gt;
+&lt;p&gt;9.3 Ki dat limit ou geyen pou fe yon reklamayon?&lt;/p&gt;
+&lt;p&gt;- Ou gen yon dele &amp;nbsp;90 jou pou fe tout reklamasyon. Apre period sa, Natcom Lotto pa reponsab pou peyew kob ou te genyen men lap ajoute li sou gran pri a. &amp;nbsp;Nan ka sa moun ki te jwe ap dako kel pa gen dwa sou tike sa kel pat janm al touche kob li te genyen pou li a.&lt;/p&gt;</value>
+  </data>
+  <data name="h1" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;Peyman:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;1&lt;sup&gt;e&lt;/sup&gt; Lo: ou genyen 50 fwa (50x) kob ou parye a&lt;/p&gt;
+&lt;p&gt;2&lt;sup&gt;e&lt;/sup&gt; Lo: ou genyen 20 fwa (20x) kob ou parye a&lt;/p&gt;
+&lt;p&gt;3&lt;sup&gt;e&lt;/sup&gt; Lo: ou genyen 10 fwa (10x) kob ou parye a&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Le tiraj la:&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;- Rezilta NewYork : 14:30 (Midi), 22:30 (Aswe), nimewo ganyan : NUMBERS ak Win4&lt;/p&gt;
+&lt;p&gt;- Tout Tike ou jwe 30 minit avan tiraj la ap konte pou pwochen tiraj&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Ekzamp:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;- Rezilta NewYork pou dat: 14/03/2022 (le tiraj la: 14:30):&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Tiraj: NUMBERS: 139; Win4: 3505&lt;/li&gt;
+&lt;li&gt;B&amp;ograve;l&amp;egrave;t NewYork nimewo ganyan: 1e Lo: 39; 2e Lo: 35; 3e Lo: 05&lt;/li&gt;
+&lt;/ul&gt;</value>
+  </data>
+  <data name="h2" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;Peyman: &lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;Genyen 1000 fwa (1000x) kob ou parye a.&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Le tiraj la:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;- Rezilta NewYork: 14:30 (Midi), 22:30 (Aswe)&lt;/p&gt;
+NUMBERS ak Win4&lt;/p&gt;
+&lt;p&gt;- Tout Tike ou jwe 30 minit avan tiraj la ap konte pou pwochen tiraj&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Nimewo ganyan:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;-&amp;nbsp;Konbinezon 2 nimewo ganyan nan Bolet NewYork la&lt;/p&gt;</value>
+  </data>
+  <data name="h3" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;Peyman: &lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;Genyen 500 fwa (500x) kob ou parye a.&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Le tiraj la:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;- Rezilta NewYork: 14:30 (Midi), 22:30 (Aswe)&lt;/p&gt;
+NUMBERS ak Win4&lt;/p&gt;
+&lt;p&gt;- Tout Tike ou jwe 30 minit avan tiraj la ap konte pou pwochen tiraj&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Nimewo ganyan:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;-&amp;nbsp;Tiraj NewYork: NUMBERS&lt;/p&gt;</value>
+  </data>
+  <data name="h4" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;Peyman:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;1&lt;sup&gt;e&lt;/sup&gt; Lo: ou genyen 50 fwa (50x) kob ou parye a&lt;/p&gt;
+&lt;p&gt;2&lt;sup&gt;e&lt;/sup&gt; Lo: ou genyen 20 fwa (20x) kob ou parye a&lt;/p&gt;
+&lt;p&gt;3&lt;sup&gt;e&lt;/sup&gt; Lo: ou genyen 10 fwa (10x) kob ou parye a&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Le tiraj la:&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;-&amp;nbsp;Rezilta Florida: 13:30 (Midi), 21:45 (Aswe), nimewo ganyan : Pick3 ak Pick4&lt;/p&gt;
+NUMBERS ak Win4&lt;/p&gt;
+&lt;p&gt;- Tout Tike ou jwe 30 minit avan tiraj la ap konte pou pwochen tiraj&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Ekzamp:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;-&amp;nbsp;Rezilta Florida pou dat: 14/03/2022 (le tiraj la: 13:30):&lt;/p&gt;
+&lt;ul style="list-style-type: square;"&gt;
+&lt;li&gt;Tiraj: PICK3: &lt;strong&gt;462&lt;/strong&gt;; PICK4: &lt;strong&gt;0453&lt;/strong&gt;&lt;/li&gt;
+&lt;li&gt;B&amp;ograve;l&amp;egrave;t Florida nimewo ganyan: 1&lt;sup&gt;e&lt;/sup&gt; Lo: &lt;strong&gt;62&lt;/strong&gt;; 2&lt;sup&gt;e&lt;/sup&gt; Lo: &lt;strong&gt;04&lt;/strong&gt;; 3&lt;sup&gt;e&lt;/sup&gt; Lo: &lt;strong&gt;53&lt;/strong&gt;&lt;/li&gt;
+&lt;/ul&gt;</value>
+  </data>
+  <data name="h5" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;Peyman: &lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;Genyen 1000 fwa (1000x) kob ou parye a.&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Le tiraj la:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;- Rezilta Florida: 13:30 (Midi), 21:45 (Aswe)&lt;/p&gt;
+NUMBERS ak Win4&lt;/p&gt;
+&lt;p&gt;- Tout Tike ou jwe 30 minit avan tiraj la ap konte pou pwochen tiraj&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Nimewo ganyan:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;-&amp;nbsp;Konbinezon 2 nimewo ganyan nan Bolet Florida la&lt;/p&gt;</value>
+  </data>
+  <data name="h6" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;Peyman: &lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;Genyen 500 fwa (500x) kob ou parye a.&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Le tiraj la:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;- Rezilta Florida: 13:30 (Midi), 21:45 (Aswe)&lt;/p&gt;
+NUMBERS ak Win4&lt;/p&gt;
+&lt;p&gt;- Tout Tike ou jwe 30 minit avan tiraj la ap konte pou pwochen tiraj&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Nimewo ganyan:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;-&amp;nbsp;Tiraj Florida: PICK3&lt;/p&gt;</value>
+  </data>
+  <data name="h7" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;Peyman: &lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;1st: Genyen 40 fwa (40x) kob ou parye a.&lt;/p&gt;
+&lt;p&gt;2nd - 11st: Genyen 4 fwa (4x) kob ou parye a.&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Le tiraj la:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;Rezilta chak 30 minit epi tann nan 10 minit .&lt;/p&gt;
+&lt;p&gt;Egzamp : &lt;/p&gt;
+&lt;p&gt;- Lè tiraj la komanse : 0:00.&lt;/p&gt;
+&lt;p&gt;- Lè tiraj la fèmen : 0:30 .&lt;/p&gt;
+&lt;p&gt;- - Tann tiraj sistèm nan lap disponib nan 10 minit.Kliyan an ap resevw rezilta apati 0:30:01 - 0:40:00&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Nimewo ganyan:&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;-&amp;nbsp;Tiraj sistèm lotri Natcom nan , enkli 2 nimewo&lt;/p&gt;</value>
+  </data>
+  <data name="p1" xml:space="preserve">
+    <value>&lt;p&gt;- Jwe avek lajan ki sou kont prensipal ou: *5555# oswa sou: sitweb/app Natcom lotto&lt;/p&gt;
+&lt;p&gt;- Jwe avek lajan ki sou kont Natcash ou : *202# chwazi option 6&lt;/p&gt;
+&lt;p&gt;- Quick Pick:&lt;/p&gt;
+&lt;p&gt;Rezilta Lotri NewYork::&lt;/p&gt;
+&lt;p&gt;+ Achte 1 tike: &lt;span style=color: #ff0000;"&gt;*5555*1&lt;/span&gt;*XX*parye#&amp;nbsp; Peze Send&lt;/p&gt;
+&lt;p&gt;+ Achte 2-5 tike: &lt;span style="color: #ff0000;"&gt;*5555*1&lt;/span&gt;*XX* paryaj 1*XX* paryaj 2*XX* paryaj 3# Peze&amp;nbsp; Send&lt;/p&gt;
+&lt;p&gt;Rezilta Lotri Florida:&lt;/p&gt;
+&lt;p&gt;+ Achte 1 tike: &lt;span style="color: #ff0000;"&gt;*5555*2&lt;/span&gt;*XX*parye#&amp;nbsp; Peze Send&lt;/p&gt;
+&lt;p&gt;+ Achte 2-5 tike: &lt;span style="color: #ff0000;"&gt;*5555*2&lt;/span&gt;*XX* paryaj 1*XX* paryaj 2*XX* paryaj 3# Peze&amp;nbsp; Send&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Remak:&lt;/strong&gt; X soti 0-9 ak &lt;span style="color: #ff0000;"&gt;2 chif&lt;/span&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="p2" xml:space="preserve">
+    <value>&lt;p&gt;- Jwe avek lajan ki sou kont prensipal ou: *5555# oswa sou: sitweb/app Natcom lotto&lt;/p&gt;
+&lt;p&gt;- Jwe avek lajan ki sou kont Natcash ou : *202# chwazi option 6&lt;/p&gt;
+&lt;p&gt;- Quick Pick:&lt;/p&gt;
+&lt;p&gt;Rezilta Lotri NewYork::&lt;/p&gt;
+&lt;p&gt;+ Achte 1 tike:&amp;nbsp;&lt;span style=color: #ff0000;"&gt;*5555*1&lt;/span&gt;*XXXX*parye#&amp;nbsp; Peze Send&lt;/p&gt;
+&lt;p&gt;+ Achte 2-5 tike:&amp;nbsp;&lt;span style="color: #ff0000;"&gt;*5555*1&lt;/span&gt;*XXXX* paryaj 1*XXXX* paryaj 2*XXXX* paryaj 3# Peze&amp;nbsp; Send&lt;/p&gt;
+&lt;p&gt;&amp;nbsp;&lt;/p&gt;
+&lt;p&gt;Rezilta Lotri Florida:&lt;/p&gt;
+&lt;p&gt;+ Achte 1 tike: &lt;span style="color: #ff0000;"&gt;*5555*2&lt;/span&gt;*XXXX*parye#&amp;nbsp; Peze Send&lt;/p&gt;
+&lt;p&gt;+ Achte 2-5 tike: &lt;span style="color: #ff0000;"&gt;*5555*2&lt;/span&gt;*XXXX* paryaj 1*XXXX* paryaj 2*XXXX* paryaj 3# Peze&amp;nbsp; Send&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Remak:&lt;/strong&gt; X soti 0-9 ak&lt;span style="color: #ff0000;"&gt; 4 chif&lt;/span&gt;&lt;/p&gt;
+&lt;p&gt;&amp;nbsp;&lt;/p&gt;</value>
+  </data>
+  <data name="p3" xml:space="preserve">
+    <value>&lt;p&gt;- Jwe avek lajan ki sou kont prensipal ou: *5555# oswa sou: sitweb/app Natcom lotto&lt;/p&gt;
+&lt;p&gt;- Jwe avek lajan ki sou kont Natcash ou : *202# chwazi option 6&lt;/p&gt;
+&lt;p&gt;- Quick Pick:&lt;/p&gt;
+&lt;p&gt;Rezilta Lotri NewYork::&lt;/p&gt;
+&lt;p&gt;+ Achte 1 tike:&amp;nbsp;&lt;span style=color: #ff0000;"&gt;*5555*1&lt;/span&gt;*XXX*parye#&amp;nbsp; Peze Send&lt;/p&gt;
+&lt;p&gt;+ Achte 2-5 tike:&amp;nbsp;&lt;span style="color: #ff0000;"&gt;*5555*1&lt;/span&gt;*XXX* paryaj 1*XXX* paryaj 2*XXX* paryaj 3# Peze&amp;nbsp; Send&lt;/p&gt;
+&lt;p&gt;Rezilta Lotri Florida:&lt;/p&gt;
+&lt;p&gt;+ Achte 1 tike: &lt;span style="color: #ff0000;"&gt;*5555*2&lt;/span&gt;*XXX*parye#&amp;nbsp; Peze Send&lt;/p&gt;
+&lt;p&gt;+ Achte 2-5 tike: &lt;span style="color: #ff0000;"&gt;*5555*2&lt;/span&gt;*XXX* paryaj 1*XXX* paryaj 2*XXX* paryaj 3# Peze&amp;nbsp; Send&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Remak:&lt;/strong&gt; X soti 0-9 ak&lt;span style="color: #ff0000;"&gt;&amp;nbsp;3 chif&lt;/span&gt;&lt;/p&gt;
+&lt;p&gt;&amp;nbsp;&lt;/p&gt;"</value>
+  </data>
+  <data name="p4" xml:space="preserve">
+    <value>&lt;p&gt;- Jwe avek lajan ki sou kont prensipal ou: *5555# oswa sou: sitweb/app Natcom lotto&lt;/p&gt;
+&lt;p&gt;- Quick Pick:&lt;/p&gt;
+&lt;p&gt;Rezilta Lotri Boulchans::&lt;/p&gt;
+&lt;p&gt;+ Achte 1 tike:&amp;nbsp;&lt;span style=color: #ff0000;"&gt;*5555*3&lt;/span&gt;*XX*parye#&amp;nbsp; Peze Send&lt;/p&gt;
+&lt;p&gt;+ Achte 2-5 tike:&amp;nbsp;&lt;span style="color: #ff0000;"&gt;*5555*3&lt;/span&gt;*XX* paryaj 1*XX* paryaj 2*XX* paryaj 3# Peze&amp;nbsp; Send&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;Remak:&lt;/strong&gt; X soti 0-9 ak&lt;span style="color: #ff0000;"&gt;&amp;nbsp;2 chif&lt;/span&gt;&lt;/p&gt;
+&lt;p&gt;&amp;nbsp;&lt;/p&gt;</value>
+  </data>
+  <data name="q1" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;1. Kijan pou w tike, Quick pick e tout sot de tike (2-5 tike an menm tan)?&lt;/strong&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="q2" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;2. Kijan ouka konen siw genyen ak siw pedi?&lt;/strong&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="q3" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;3. Kijan wap resevwa kob ou genyen an ?&lt;/strong&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="q4" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;4. Kijan ou ka verifye lajan ou sot genyen an ?&lt;/strong&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="q5" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;5. Kijan ou ka retire lajan ou fin genyen an ?&lt;/strong&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="q6" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;6. Kijan ou ka chanje lang la?&lt;/strong&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="q7" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;7. Kijan ouka jwe Natcom Lotto sou kont Natcash ou?&lt;/strong&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="q8" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;8. Ou bezwen yon ed anliy?&lt;/strong&gt;&lt;/p&gt;</value>
+  </data>
+  <data name="q9" xml:space="preserve">
+    <value>&lt;p&gt;&lt;strong&gt;9. Definisyon &amp; Condisyon Natcom Lotto&lt;/strong&gt;&lt;/p&gt;</value>
+  </data>
+</root>

+ 69 - 0
website/LotteryWebApp.csproj

@@ -0,0 +1,69 @@
+<Project Sdk="Microsoft.NET.Sdk.Web">
+
+  <PropertyGroup>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <CopyRefAssembliesToPublishDirectory>false</CopyRefAssembliesToPublishDirectory>
+    <UserSecretsId>67c9c22c-cd93-4598-8c46-ffa318b90e19</UserSecretsId>
+    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
+    <DockerfileContext>.</DockerfileContext>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Grpc.AspNetCore" Version="2.40.0" />
+    <PackageReference Include="log4net" Version="2.0.14" />
+    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.9" />
+    <PackageReference Include="Microsoft.Extensions.ApiDescription.Client" Version="3.0.0">
+      <PrivateAssets>all</PrivateAssets>
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+    </PackageReference>
+    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.22" />
+    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.14.0" />
+    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.5" />
+    <PackageReference Include="Nancy" Version="2.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
+    <PackageReference Include="NSwag.ApiDescription.Client" Version="13.0.5">
+      <PrivateAssets>all</PrivateAssets>
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+    </PackageReference>
+  </ItemGroup>
+
+  <ItemGroup>
+    <Compile Update="Languages\Lang.Designer.cs">
+      <DesignTime>True</DesignTime>
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Lang.resx</DependentUpon>
+    </Compile>
+    <Compile Update="Languages\Question.Designer.cs">
+      <DesignTime>True</DesignTime>
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Question.resx</DependentUpon>
+    </Compile>
+    <Compile Update="Languages\Question.en.Designer.cs">
+      <DesignTime>True</DesignTime>
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Question.en.resx</DependentUpon>
+    </Compile>
+  </ItemGroup>
+
+  <ItemGroup>
+    <EmbeddedResource Update="Languages\Lang.fr.resx">
+      <Generator>PublicResXFileCodeGenerator</Generator>
+    </EmbeddedResource>
+    <EmbeddedResource Update="Languages\Lang.resx">
+      <Generator>PublicResXFileCodeGenerator</Generator>
+      <LastGenOutput>Lang.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+    <EmbeddedResource Update="Languages\Question.en.resx">
+      <Generator>PublicResXFileCodeGenerator</Generator>
+      <LastGenOutput>Question.en.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+    <EmbeddedResource Update="Languages\Question.fr.resx">
+      <Generator>PublicResXFileCodeGenerator</Generator>
+    </EmbeddedResource>
+    <EmbeddedResource Update="Languages\Question.resx">
+      <Generator>PublicResXFileCodeGenerator</Generator>
+      <LastGenOutput>Question.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+  </ItemGroup>
+
+</Project>

+ 25 - 0
website/LotteryWebApp.sln

@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.32112.339
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LotteryWebApp", "LotteryWebApp.csproj", "{847E0916-075B-4836-93BC-919C422FA9FE}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{847E0916-075B-4836-93BC-919C422FA9FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{847E0916-075B-4836-93BC-919C422FA9FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{847E0916-075B-4836-93BC-919C422FA9FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{847E0916-075B-4836-93BC-919C422FA9FE}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {64675649-91D6-4296-99F3-7F71A2086625}
+	EndGlobalSection
+EndGlobal

+ 24 - 0
website/Models/AccountViewModel.cs

@@ -0,0 +1,24 @@
+namespace LotteryWebApp.Models
+{
+    public class AccountIndex_ViewModel
+    {
+    }
+
+    public class AccountLogin_ViewModel
+    {
+        public string code { get; set;}
+        public string step { get; set; }
+        public string message { get; set; }
+    }
+
+    public class AccountRegister_ViewModel
+    {
+        public string code { get; set; }
+    }
+
+    public class AccountForgotPassword_ViewModel
+    {
+        public string code { get; set; }
+
+    }
+}

+ 35 - 0
website/Models/BuyTicketViewModel.cs

@@ -0,0 +1,35 @@
+using LotteryWebApp.Service;
+using System.Collections.Generic;
+
+namespace LotteryWebApp.Models
+{
+    public class BuyTicket_ViewModel
+    {
+        public string termType { get; set; }
+    }
+
+    public class BuyTicketChoose_ViewModel
+    {
+        public string ticketType { get; set;}
+    }
+
+    public class BuyTicketPayment_ViewModel
+    {
+        public string code { get; set; }
+        public string step { get; set; }
+        public string tickets { get; set; }
+        public string ticketType { get; set; }
+        public ConfirmTicketDataResponse confirmTicketDataResponse { get; set; }
+        public ConfirmBuyingTicketResponse confirmBuyingTicketResponse { get; set; }
+
+        public Profile profile { get; set; }
+        public string termType { get; set;}
+    }
+
+    public class LastTermResult_ViewModel
+    {
+        public List<Term> listTermNotDrawn { get; set; }
+        public List<Term> listTerm { get; set; }
+        public string termType { get; set; }
+    }
+}

+ 11 - 0
website/Models/ErrorViewModel.cs

@@ -0,0 +1,11 @@
+using System;
+
+namespace LotteryWebApp.Models
+{
+    public class ErrorViewModel
+    {
+        public string RequestId { get; set; }
+
+        public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
+    }
+}

+ 27 - 0
website/Models/HistoryViewModel.cs

@@ -0,0 +1,27 @@
+using LotteryWebApp.Service;
+using System.Collections.Generic;
+
+namespace LotteryWebApp.Models
+{
+    public class History_ViewModel
+    {
+        public string winType { get; set; }
+        public string gameId { get; set; }
+    }
+
+    public class HistoryUserTicket_ViewModel
+    {
+        public string winType { get; set; }
+        public string gameId { get; set; }
+        public List<Ticket> tickets { get; set; }
+    }
+
+    public class HistoryTicketDetail_ViewModel
+    {
+        public Ticket ticket { get; set; }
+        public string winType { get; set; }
+        public string msisdn { get; set; }
+        public string type { get; set; }
+
+    }
+}

+ 60 - 0
website/Models/HomeViewModel.cs

@@ -0,0 +1,60 @@
+using LotteryWebApp.Service;
+using System;
+using System.Collections.Generic;
+
+namespace LotteryWebApp.Models
+{
+    public class HomeIndex_ViewModel
+    {
+        public string termType { get; set; }
+        public Profile profile { get; set; }
+        public UserStatus userStatus { get; set; }
+        public List<Term> listTerm { get; set; }
+        public String uuid { get; set; }
+        public String subDomain { get; set; }
+        public String topWinner { get; set; }
+    }
+
+    public class HomeTransfer_ViewModel
+    {
+        public string step { get; set; }
+        public string code { get; set; }
+        public string walletType { get; set; }
+        public Profile profile { get; set; }
+        public UserStatus userStatus { get; set; }
+        public Transaction transaction { get; set; }
+        public TransferMoneyRequest transferData { get; set; }
+
+    }
+
+    public class HomeRules_ViewModel
+    {
+        public string termType { get; set; }
+    }
+    public class HomeFAQ_ViewModel
+    {
+    }
+
+    public class HomeResults_ViewModel
+    {
+        public string termType { get; set; }
+        public string fromDate { get; set; }
+        public string toDate { get; set; }
+    }
+    public class TermResultModel
+    {
+        public List<Term> listTerm { get; set; }
+        public string termType { get; set; }
+
+    }
+
+    public class TermResultHistoryModel
+    {
+        public List<Term> listTerm { get; set; }
+        public string termType { get; set; }
+        public string fromDate { get; set; }
+        public string toDate { get; set; }
+
+    }
+
+}

+ 18 - 0
website/Models/PartialViewModel.cs

@@ -0,0 +1,18 @@
+using LotteryWebApp.Service;
+
+namespace LotteryWebApp.Models
+{
+    public class PartialInform_ViewModel
+    {
+        public string message { get; set; }
+    }
+
+    public class PartialTransaction_ViewModel
+    {
+        public string content { get; set; }
+        public string confirmFunc { get; set; }
+        public string resentFunc { get; set; }
+        public string cancelFunc { get; set; }
+
+    }
+}

+ 30 - 0
website/Models/ProfileViewModel.cs

@@ -0,0 +1,30 @@
+using LotteryWebApp.Service;
+
+namespace LotteryWebApp.Models
+{
+    public class ProfileViewModel
+    {
+        public Profile profile { get; set; }
+        public UserStatus userStatus { get; set; }
+        public string channel { get; set; }
+
+
+    }
+    public class ProfileChangePassword_ViewModel
+    {
+        public string code { get; set; }
+    }
+    public class ProfileProfileInfo_ViewModel
+    {
+        public string code { get; set; }
+        public Profile profile { get; set; }
+        public UserStatus userStatus { get; set; }
+
+
+    }
+
+    public class ProfileHowToPlay_ViewModel
+    {
+        public string termType { get; set; }
+    }
+}

+ 42 - 0
website/Program.cs

@@ -0,0 +1,42 @@
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Logging;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Threading.Tasks;
+using System.Xml;
+
+namespace LotteryWebApp
+{
+    public class Program
+    {
+        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
+
+        public static void Main(string[] args)
+        {
+            XmlDocument log4netConfig = new XmlDocument();
+            log4netConfig.Load(File.OpenRead("log4net.config"));
+
+            var repo = log4net.LogManager.CreateRepository(
+                Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy));
+
+            log4net.Config.XmlConfigurator.Configure(repo, log4netConfig["log4net"]);
+
+            log.Info("Application - Main is invoked");
+
+            CreateHostBuilder(args).Build().Run();
+        }
+
+        public static IHostBuilder CreateHostBuilder(string[] args) =>
+            Host.CreateDefaultBuilder(args)
+                .ConfigureWebHostDefaults(webBuilder =>
+                {
+                    webBuilder.UseStartup<Startup>()
+                    .UseUrls("http://localhost:8800");
+                });
+    }
+}

+ 20 - 0
website/Properties/PublishProfiles/FolderProfile.pubxml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121. 
+-->
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <DeleteExistingFiles>true</DeleteExistingFiles>
+    <ExcludeApp_Data>false</ExcludeApp_Data>
+    <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
+    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
+    <LastUsedPlatform>Any CPU</LastUsedPlatform>
+    <PublishProvider>FileSystem</PublishProvider>
+    <PublishUrl>D:\02-Deploying\Natcom\Lottery</PublishUrl>
+    <WebPublishMethod>FileSystem</WebPublishMethod>
+    <SiteUrlToLaunchAfterPublish />
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <ProjectGuid>847e0916-075b-4836-93bc-919c422fa9fe</ProjectGuid>
+    <SelfContained>false</SelfContained>
+  </PropertyGroup>
+</Project>

+ 36 - 0
website/Properties/launchSettings.json

@@ -0,0 +1,36 @@
+{
+  "iisSettings": {
+    "windowsAuthentication": false,
+    "anonymousAuthentication": true,
+    "iisExpress": {
+      "applicationUrl": "http://localhost:48614",
+      "sslPort": 44373
+    }
+  },
+  "profiles": {
+    "IIS Express": {
+      "commandName": "IISExpress",
+      "launchBrowser": true,
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development",
+        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
+      }
+    },
+    "LotteryWebApp": {
+      "commandName": "Project",
+      "launchBrowser": true,
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development",
+        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
+      },
+      "applicationUrl": "http://localhost:8800"
+    },
+    "Docker": {
+      "commandName": "Docker",
+      "launchBrowser": true,
+      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
+      "publishAllPorts": true,
+      "useSSL": true
+    }
+  }
+}

+ 92 - 0
website/README.md

@@ -0,0 +1,92 @@
+# Lotterywebapp
+
+
+
+## Getting started
+
+To make it easy for you to get started with GitLab, here's a list of recommended next steps.
+
+Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
+
+## Add your files
+
+- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
+- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
+
+```
+cd existing_repo
+git remote add origin https://gitlab.com/hieubt11/lotterywebapp.git
+git branch -M main
+git push -uf origin main
+```
+
+## Integrate with your tools
+
+- [ ] [Set up project integrations](https://gitlab.com/hieubt11/lotterywebapp/-/settings/integrations)
+
+## Collaborate with your team
+
+- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
+- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
+- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
+- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
+- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
+
+## Test and Deploy
+
+Use the built-in continuous integration in GitLab.
+
+- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
+- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
+- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
+- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
+- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
+
+***
+
+# Editing this README
+
+When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!).  Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template.
+
+## Suggestions for a good README
+Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
+
+## Name
+Choose a self-explaining name for your project.
+
+## Description
+Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
+
+## Badges
+On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
+
+## Visuals
+Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
+
+## Installation
+Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
+
+## Usage
+Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
+
+## Support
+Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
+
+## Roadmap
+If you have ideas for releases in the future, it is a good idea to list them in the README.
+
+## Contributing
+State if you are open to contributions and what your requirements are for accepting them.
+
+For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
+
+You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
+
+## Authors and acknowledgment
+Show your appreciation to those who have contributed to the project.
+
+## License
+For open source projects, say how it is licensed.
+
+## Project status
+If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.

+ 5 - 0
website/Rsa/Policy.txt

@@ -0,0 +1,5 @@
+{ 
+   "Statement": [{ 
+      "Resource":"RESOURCE"
+   }] 
+}

+ 10 - 0
website/Rsa/private-rsa-key.xml

@@ -0,0 +1,10 @@
+<RSAKeyValue>
+	<D>kkFXJqBENrjtEaGF8oQKhD3G/FTfbN4UheVQzrdoMr6wD6xy5xP6mB8wJHRm7HpLY2isD42WJ49l4NeMZeUK0WlUutWirKlrFpgNBUwopGSdAlrCX9LMV14kZPVIfURv16rlICRW9WSkm56EGzdzP6aIL/gN1wlTzeCw8Y+vEJS1ZTN6FC/SWrF5CPtGFIa8kSQyAsEheNXOXkGBA5/DuumYSsYJuLqhp578QblopyWtdD1zeQ5Wwa8uEo+uML9yZLxK1dJaZIui1IpajU04m7L7LCBLMgKTRnXDSZtONu22oQgTN5AYksnCP2EYIxhT35eBtgsgZDJ1tWqY+3FcsQ==</D>
+	<DP>TGSWeKJKgx6jyS9qVUhSMxHG4jav4iCA2kT1iJk3y58gAgPJxKnor2U152uONxY9cE85By6bBkgrKC5TO3WAAXKRH5j5YLTS1aenuQNQEYk2M799l+qqPjxAeb3UbWJ0PYeS4UqzlJ/96TgQoGHDr7Hh0CBH/2xGJHCG3+jyQXU=</DP>
+	<DQ>dYQQjk9xOTdzckYLXNcPskaXq1MMVSpLxPtBezG/dE1uNK7LpKKVyJhQRw7iaadQouKev3OmLKifmhnmVP5t87rsymINu7RHGkVTuoAwUWid5upYNt4+1nrpjgGyK3cQr9rdG4JDyOMVYIdtG3/az8AryD4Y2GU6PWxl0emhJoE=</DQ>
+	<Exponent>AQAB</Exponent>
+	<InverseQ>nj7yF6LTnff4KZDWQNqJ9Y5GQ/BFXxuCWtC7YzoNJAynbDN1Xa7NYQ2W/6kO1IBHs1L+jjTHsBZjGuKX1dMRw/Z52tajekqIrfbz4eBuzR/sp3NNHw8hGtroGGkotofqAPr+n8LpezfgDbTc21z7djkTCiKFOYeT4voaEb4EBrc=</InverseQ>
+	<Modulus>yM2QCmwy4RUu1Uq0f8exh4EmHwTmiOqF55Nm5U3KZwdtQhCYrEFaN8OMkE/c/qTyAvXyYQmF8Wu64dtHzC3eYEdBGP5o72LBAXGDJ8Sb9ecZ+9vFaAnu6gkYLrtfFEQ+1YdQaJDiKJXgOw2hpBipbL13D/5xlagrHVwpwhIhZw0pjjMQPuUz86XHJxvwzMIsu7/0bV84zASkfJ1Cy071hjFrWHhCS9C6Kk4kXq72GqFbPMFIA6Nrdpk0nTgJRo+kG4Q66KQIuMbo38Zo13nz84NHH2VtZSrOIFprB8w4UIg6FZNziUA7urPeLdMTWyoqgOAHQLxgGsPjh6Yy3+ponw==</Modulus>
+	<P>469UaI5B7zmyk9K6xaU1TW6QtlW78wMG18wewOV+zgfjmzkOSkvyLyxEXsjM1w9K1Knx5PZrv0KTOyvTdFlQBxu//kE7GojuFpdvLdL1E+9HXbpHaACtVt47+v9Wns9F6T++6C/WFI4cWeaSWPNqZEHpjdCGTQEruYaoPBJTpGU=</P>
+	<Q>4cZo1+UZhVkw0s2M/WBk7uBf9FAlw+RjxuWhyhxMLEjIyAXEG7lanthSXeR0LTih8A3w4tb5/6F5Dlw4jAsRqtA2y0dD8hYdaFGEFM1o1maos7G0XKBXz3FZ4hDP1B8wzWo+XeTblLRW9iE+OIhVIVfchVuBXprL6EZjaNJGPrM=</Q>
+</RSAKeyValue>

+ 3 - 0
website/Rsa/private.pem

@@ -0,0 +1,3 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDIzZAKbDLhFS7VSrR/x7GHgSYfBOaI6oXnk2blTcpnB21CEJisQVo3w4yQT9z+pPIC9fJhCYXxa7rh20fMLd5gR0EY/mjvYsEBcYMnxJv15xn728VoCe7qCRguu18URD7Vh1BokOIoleA7DaGkGKlsvXcP/nGVqCsdXCnCEiFnDSmOMxA+5TPzpccnG/DMwiy7v/RtXzjMBKR8nULLTvWGMWtYeEJL0LoqTiRervYaoVs8wUgDo2t2mTSdOAlGj6QbhDropAi4xujfxmjXefPzg0cfZW1lKs4gWmsHzDhQiDoVk3OJQDu6s94t0xNbKiqA4AdAvGAaw+OHpjLf6mifAgMBAAECggEBAJJBVyagRDa47RGhhfKECoQ9xvxU32zeFIXlUM63aDK+sA+scucT+pgfMCR0Zux6S2NorA+NliePZeDXjGXlCtFpVLrVoqypaxaYDQVMKKRknQJawl/SzFdeJGT1SH1Eb9eq5SAkVvVkpJuehBs3cz+miC/4DdcJU83gsPGPrxCUtWUzehQv0lqxeQj7RhSGvJEkMgLBIXjVzl5BgQOfw7rpmErGCbi6oaee/EG5aKclrXQ9c3kOVsGvLhKPrjC/cmS8StXSWmSLotSKWo1NOJuy+ywgSzICk0Z1w0mbTjbttqEIEzeQGJLJwj9hGCMYU9+XgbYLIGQydbVqmPtxXLECgYEA469UaI5B7zmyk9K6xaU1TW6QtlW78wMG18wewOV+zgfjmzkOSkvyLyxEXsjM1w9K1Knx5PZrv0KTOyvTdFlQBxu//kE7GojuFpdvLdL1E+9HXbpHaACtVt47+v9Wns9F6T++6C/WFI4cWeaSWPNqZEHpjdCGTQEruYaoPBJTpGUCgYEA4cZo1+UZhVkw0s2M/WBk7uBf9FAlw+RjxuWhyhxMLEjIyAXEG7lanthSXeR0LTih8A3w4tb5/6F5Dlw4jAsRqtA2y0dD8hYdaFGEFM1o1maos7G0XKBXz3FZ4hDP1B8wzWo+XeTblLRW9iE+OIhVIVfchVuBXprL6EZjaNJGPrMCgYBMZJZ4okqDHqPJL2pVSFIzEcbiNq/iIIDaRPWImTfLnyACA8nEqeivZTXna443Fj1wTzkHLpsGSCsoLlM7dYABcpEfmPlgtNLVp6e5A1ARiTYzv32X6qo+PEB5vdRtYnQ9h5LhSrOUn/3pOBCgYcOvseHQIEf/bEYkcIbf6PJBdQKBgHWEEI5PcTk3c3JGC1zXD7JGl6tTDFUqS8T7QXsxv3RNbjSuy6SilciYUEcO4mmnUKLinr9zpiyon5oZ5lT+bfO67MpiDbu0RxpFU7qAMFFonebqWDbePtZ66Y4Bsit3EK/a3RuCQ8jjFWCHbRt/2s/AK8g+GNhlOj1sZdHpoSaBAoGBAJ4+8hei0533+CmQ1kDaifWORkPwRV8bglrQu2M6DSQMp2wzdV2uzWENlv+pDtSAR7NS/o40x7AWYxril9XTEcP2edrWo3pKiK328+Hgbs0f7KdzTR8PIRra6BhpKLaH6gD6/p/C6Xs34A203Ntc+3Y5EwoihTmHk+L6GhG+BAa3
+-----END RSA PRIVATE KEY-----

+ 4 - 0
website/Rsa/public-rsa-key.xml

@@ -0,0 +1,4 @@
+<RSAKeyValue>
+	<Exponent>AQAB</Exponent>
+	<Modulus>yM2QCmwy4RUu1Uq0f8exh4EmHwTmiOqF55Nm5U3KZwdtQhCYrEFaN8OMkE/c/qTyAvXyYQmF8Wu64dtHzC3eYEdBGP5o72LBAXGDJ8Sb9ecZ+9vFaAnu6gkYLrtfFEQ+1YdQaJDiKJXgOw2hpBipbL13D/5xlagrHVwpwhIhZw0pjjMQPuUz86XHJxvwzMIsu7/0bV84zASkfJ1Cy071hjFrWHhCS9C6Kk4kXq72GqFbPMFIA6Nrdpk0nTgJRo+kG4Q66KQIuMbo38Zo13nz84NHH2VtZSrOIFprB8w4UIg6FZNziUA7urPeLdMTWyoqgOAHQLxgGsPjh6Yy3+ponw==</Modulus>
+</RSAKeyValue>

+ 3 - 0
website/Rsa/public.pem

@@ -0,0 +1,3 @@
+-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyM2QCmwy4RUu1Uq0f8exh4EmHwTmiOqF55Nm5U3KZwdtQhCYrEFaN8OMkE/c/qTyAvXyYQmF8Wu64dtHzC3eYEdBGP5o72LBAXGDJ8Sb9ecZ+9vFaAnu6gkYLrtfFEQ+1YdQaJDiKJXgOw2hpBipbL13D/5xlagrHVwpwhIhZw0pjjMQPuUz86XHJxvwzMIsu7/0bV84zASkfJ1Cy071hjFrWHhCS9C6Kk4kXq72GqFbPMFIA6Nrdpk0nTgJRo+kG4Q66KQIuMbo38Zo13nz84NHH2VtZSrOIFprB8w4UIg6FZNziUA7urPeLdMTWyoqgOAHQLxgGsPjh6Yy3+ponwIDAQAB
+-----END PUBLIC KEY-----

+ 141 - 0
website/Service/ApiClasses.cs

@@ -0,0 +1,141 @@
+using Newtonsoft.Json.Linq;
+using System;
+
+namespace LotteryWebApp.Service
+{
+    public class Posting
+    {
+        public string serviceId { get; set; }
+        public string SV_ID { get; set; }
+        public string service_id { get; set; }
+
+    }
+
+    public class Profile
+    {
+        public String status { get; set; }
+        public String message { get; set; }
+        public String id { get; set; }
+        public String usersId { get; set; }
+        public String users { get; set; }
+        public String serviceId { get; set; }
+        public String fullName { get; set; }
+        public String picture { get; set; }
+        public String realPicture { get; set; }
+
+        public String birthday { get; set; }
+    }
+
+    public class UserStatus
+    {
+        public String status { get; set; }
+        public String message { get; set; }
+        public String id { get; set; }
+        public String msisdn { get; set; }
+        public String users { get; set; }
+        public String pass { get; set; }
+        public String serviceid { get; set; }
+        public String dateregist { get; set; }
+        public String isactive { get; set; }
+        public String channel { get; set; }
+        public String bet_coin { get; set; }
+        public String cash_coin { get; set; }
+        public String role { get; set; }
+        public String language { get; set; }
+    }
+
+    public class Service
+    {
+        public String id { get; set; }
+        public String code { get; set; }
+        public String name { get; set; }
+        public String country { get; set; }
+        public String shortCode { get; set; }
+        public String prefix { get; set; }
+    }
+
+    public class Term
+    {
+        public String id { get; set; }
+        public String seq { get; set; }
+        public String status { get; set; }
+        public String date_start { get; set; }
+        public String date_end { get; set; }
+        public String date_random { get; set; }
+        public String money_winner { get; set; }
+        public String gameId { get; set; }
+        public String result { get; set; }
+        public String split { get; set; }
+        public String countDownSeconds { get; set; }
+        public String isEvening { get; set; }
+        public String numberGame { get; set; }
+        public String win4Game { get; set; }
+        public String bolet { get; set; }
+        public String mariaj { get; set; }
+        public String lotto3 { get; set; }
+
+    }
+
+    public class Ticket
+    {
+        public String id { get; set; }
+        public String seq { get; set; }
+        public String money { get; set; }
+        public String code { get; set; }
+        public String createDate { get; set; }
+        public String termId { get; set; }
+        public String status { get; set; }
+        public String paymentCode { get; set; }
+        public String paymentMessage { get; set; }
+        public String split { get; set; }
+        public String billCode { get; set; }
+        public String channel { get; set; }
+        public String channelPayment { get; set; }
+        public String termStartDate { get; set; }
+        public String termEndDate { get; set; }
+        public String termRandomDate { get; set; }
+        public String termResult { get; set; }
+        public String isEvening { get; set; }
+        public String moneyWin { get; set; }
+        public String gameId { get; set; }
+
+    }
+
+    public class TicketInfo
+    {
+        public String code { get; set; }
+        public String money { get; set; }
+
+    }
+
+    public class Transaction
+    {
+        public String id { get; set; }
+        public String seq { get; set; }
+        public String acountSend { get; set; }
+        public String acountRecieve { get; set; }
+        public String timeRequest { get; set; }
+        public String timeTopup { get; set; }
+        public String status { get; set; }
+        public String money { get; set; }
+        public String channelRequest { get; set; }
+        public String channelPayment { get; set; }
+        public String reqeustId { get; set; }
+        public String responseId { get; set; }
+        public String errCode { get; set; }
+        public String errMsg { get; set; }
+        public String serviceId { get; set; }
+        public String responseCode { get; set; }
+        public String responseMessage { get; set; }
+    }
+
+    public class TermObj
+    {
+        public String id { get; set; }
+        public String status { get; set; }
+        public String startDate { get; set; }
+        public String endDate { get; set; }
+        public String randomDate { get; set; }
+        public String moneyWinner { get; set; }
+    }
+}

+ 17 - 0
website/Service/ApiConstants.cs

@@ -0,0 +1,17 @@
+namespace LotteryWebApp.Service
+{
+    public class ApiConstants
+    {
+        public const string WEB = "WEB";
+        public const string WALLET = "WALLET";
+
+        public const string LOGIN = "LOGIN";
+        public const string REGIST = "REGIST";
+        public const string CANCEL = "CANCEL";
+        public const string RESETPASS = "RESETPASS";
+        public const string CHANGEPASS = "CHANGEPASS";
+        public const string SERVICE_ID = "1";
+        public const string WALLET_TOKEN = "xbdIk7T0KOO+o8W3ARwiCHBy6F3SrNl4sqmFkKLWRjhbgkrZ26KiSiwOXJW2Vg10a3jGqNqFbt+YqXgoXQDpaaP5zPt71pe9YKQ4rsqwz+E=";
+
+    }
+}

+ 339 - 0
website/Service/ApiFunctions.cs

@@ -0,0 +1,339 @@
+using LotteryWebApp.Common;
+using Microsoft.Extensions.Configuration;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Net.Http;
+using System.Net.Http.Headers;
+using System.Text;
+using System.Text.Json;
+using System.Threading.Tasks;
+using JsonSerializer = System.Text.Json.JsonSerializer;
+
+namespace LotteryWebApp.Service
+{
+
+    public class APIFunctions
+    {
+        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
+
+        public RegisterResponse UserLoginApi(IConfiguration configuration, RegisterRequest registerRequest)
+        {
+            String url = configuration.GetSection("user_register").Value;
+            registerRequest.Users = registerRequest.Msisdn;
+            registerRequest.Command = ApiConstants.LOGIN;
+            registerRequest.Channel = configuration.GetSection("channel").Value;
+            registerRequest.serviceId = ApiConstants.SERVICE_ID;
+            registerRequest.channel = configuration.GetSection("channel").Value;
+
+            string jsonData = SendPost(registerRequest, ApiConstants.SERVICE_ID, url);
+
+            RegisterResponse deptObj = JsonSerializer.Deserialize<RegisterResponse>(jsonData);
+            return deptObj;
+        }
+
+        public RegisterResponse UserForgotPasswordApi(IConfiguration configuration, RegisterRequest registerRequest)
+        {
+            String url = configuration.GetSection("user_register").Value;
+            registerRequest.Users = registerRequest.Msisdn;
+            registerRequest.Command = ApiConstants.RESETPASS;
+            registerRequest.Channel = configuration.GetSection("channel").Value;
+            registerRequest.serviceId = ApiConstants.SERVICE_ID;
+            registerRequest.channel = configuration.GetSection("channel").Value;
+
+            string jsonData = SendPost(registerRequest, ApiConstants.SERVICE_ID, url);
+
+            RegisterResponse deptObj = JsonSerializer.Deserialize<RegisterResponse>(jsonData);
+            return deptObj;
+        }
+
+        public RegisterResponse UserChangePasswordApi(IConfiguration configuration, RegisterRequest registerRequest)
+        {
+            registerRequest.Command = ApiConstants.CHANGEPASS;
+            registerRequest.Channel = configuration.GetSection("channel").Value;
+            registerRequest.Users = registerRequest.Msisdn;
+            registerRequest.serviceId = ApiConstants.SERVICE_ID;
+            registerRequest.channel = configuration.GetSection("channel").Value;
+
+            String url = configuration.GetSection("user_register").Value;
+            String jsonData = SendPost(registerRequest, ApiConstants.SERVICE_ID, url);
+            RegisterResponse deptObj = JsonSerializer.Deserialize<RegisterResponse>(jsonData);
+            return deptObj;
+        }
+
+        public RegisterResponse UserRegisterApi(IConfiguration configuration, RegisterRequest registerRequest)
+        {
+            registerRequest.Command = ApiConstants.REGIST;
+            registerRequest.Channel = configuration.GetSection("channel").Value;
+            registerRequest.Users = registerRequest.Msisdn;
+            registerRequest.serviceId = ApiConstants.SERVICE_ID;
+            registerRequest.channel = configuration.GetSection("channel").Value;
+
+
+            String url = configuration.GetSection("user_register").Value;
+            String jsonData = SendPost(registerRequest, ApiConstants.SERVICE_ID, url);
+            RegisterResponse deptObj = JsonSerializer.Deserialize<RegisterResponse>(jsonData);
+            return deptObj;
+        }
+
+        public Profile UserLoadProfileApi(IConfiguration configuration, UserGetProfileRequest userGetProfileRequest)
+        {
+            userGetProfileRequest.usersQuery = userGetProfileRequest.users;
+            userGetProfileRequest.serviceId = ApiConstants.SERVICE_ID;
+            userGetProfileRequest.channel = configuration.GetSection("channel").Value;
+
+            String url = configuration.GetSection("user_get_profile").Value;
+            String jsonData = SendPost(userGetProfileRequest, ApiConstants.SERVICE_ID, url);
+            Profile deptObj = JsonSerializer.Deserialize<Profile>(jsonData);
+            deptObj.realPicture = deptObj.picture;
+            deptObj.picture = Constants.PATH + deptObj.users + "/" + deptObj.picture;
+            return deptObj;
+        }
+
+        public UserUpdateProfileResponse UserUpdateProfileApi(IConfiguration configuration, UserUpdateProfileRequest userUpdateProfileRequest)
+        {
+            userUpdateProfileRequest.serviceId = ApiConstants.SERVICE_ID;
+            userUpdateProfileRequest.channel = configuration.GetSection("channel").Value;
+
+            String url = configuration.GetSection("user_update_profile").Value;
+            String jsonData = SendPost(userUpdateProfileRequest, ApiConstants.SERVICE_ID, url);
+            UserUpdateProfileResponse deptObj = JsonSerializer.Deserialize<UserUpdateProfileResponse>(jsonData);
+            return deptObj;
+        }
+
+        public UserPicUploadResponse UserPicUploadApi(IConfiguration configuration, UserPicUploadRequest userPicUploadRequest)
+        {
+            userPicUploadRequest.serviceId = ApiConstants.SERVICE_ID;
+            userPicUploadRequest.channel = configuration.GetSection("channel").Value;
+
+            String url = configuration.GetSection("user_pic_upload").Value;
+            String jsonData = SendPost(userPicUploadRequest, ApiConstants.SERVICE_ID, url);
+            UserPicUploadResponse deptObj = JsonSerializer.Deserialize<UserPicUploadResponse>(jsonData);
+            return deptObj;
+        }
+
+        public UserStatus GetUserStatusApi(IConfiguration configuration, UserStatusRequest userStatusRequest)
+        {
+            userStatusRequest.serviceId = ApiConstants.SERVICE_ID;
+            userStatusRequest.channel = configuration.GetSection("channel").Value;
+
+            String url = configuration.GetSection("get_user_status").Value;
+            String jsonData = SendPost(userStatusRequest, ApiConstants.SERVICE_ID, url);
+            UserStatus deptObj = JsonSerializer.Deserialize<UserStatus>(jsonData);
+            return deptObj;
+        }
+
+        public ResultOfTermResponse GetResultOfTermApi(IConfiguration configuration, ResultOfTermRequest resultOfTermRequest)
+        {
+            resultOfTermRequest.serviceId = ApiConstants.SERVICE_ID;
+            resultOfTermRequest.channel = configuration.GetSection("channel").Value;
+
+            String url = configuration.GetSection("get_result_of_term").Value;
+            String jsonData = SendPost(resultOfTermRequest, ApiConstants.SERVICE_ID, url);
+            ResultOfTermResponse deptObj = JsonSerializer.Deserialize<ResultOfTermResponse>(jsonData);
+            return deptObj;
+        }
+
+
+        public TransferMoneyResponse TransferMoneyApi(IConfiguration configuration, TransferMoneyRequest transferMoneyRequest)
+        {
+            transferMoneyRequest.serviceId = ApiConstants.SERVICE_ID;
+            transferMoneyRequest.channel = configuration.GetSection("channel").Value;
+
+            String url = configuration.GetSection("transfer_money").Value;
+            String jsonData = SendPost(transferMoneyRequest, ApiConstants.SERVICE_ID, url);
+            TransferMoneyResponse deptObj = JsonSerializer.Deserialize<TransferMoneyResponse>(jsonData);
+            return deptObj;
+        }
+
+        public SendOTPResponse SendOTPApi(IConfiguration configuration, SendOTPRequest sendOTPRequest)
+        {
+            sendOTPRequest.serviceId = ApiConstants.SERVICE_ID;
+            sendOTPRequest.channel = configuration.GetSection("channel").Value;
+
+            String url = configuration.GetSection("send_otp").Value;
+            String jsonData = SendPost(sendOTPRequest, ApiConstants.SERVICE_ID, url);
+            SendOTPResponse deptObj = JsonSerializer.Deserialize<SendOTPResponse>(jsonData);
+            return deptObj;
+        }
+
+        public TransactionInfoResponse GetTransactionInfoApi(IConfiguration configuration, TransactionInfoRequest transactionInfoRequest)
+        {
+            transactionInfoRequest.serviceId = ApiConstants.SERVICE_ID;
+            transactionInfoRequest.channel = configuration.GetSection("channel").Value;
+
+            String url = configuration.GetSection("get_transaction_info").Value;
+            String jsonData = SendPost(transactionInfoRequest, ApiConstants.SERVICE_ID, url);
+            TransactionInfoResponse deptObj = JsonSerializer.Deserialize<TransactionInfoResponse>(jsonData);
+            return deptObj;
+        }
+
+        public ConfirmTicketDataResponse ConfirmTicketDataApi(IConfiguration configuration, ConfirmTicketDataRequest confirmTicketDataRequest)
+        {
+            confirmTicketDataRequest.serviceId = ApiConstants.SERVICE_ID;
+            confirmTicketDataRequest.channel = configuration.GetSection("channel").Value;
+
+            String url = configuration.GetSection("confirm_ticket_data").Value;
+            String jsonData = SendPost(confirmTicketDataRequest, ApiConstants.SERVICE_ID, url);
+            ConfirmTicketDataResponse deptObj = JsonSerializer.Deserialize<ConfirmTicketDataResponse>(jsonData);
+            return deptObj;
+        }
+
+        public ConfirmOTPResponse ConfirmOTPApi(IConfiguration configuration, ConfirmOTPRequest confirmOTPRequest)
+        {
+            confirmOTPRequest.serviceId = ApiConstants.SERVICE_ID;
+            confirmOTPRequest.channel = configuration.GetSection("channel").Value;
+
+            String url = configuration.GetSection("confirm_otp").Value;
+            String jsonData = SendPost(confirmOTPRequest, ApiConstants.SERVICE_ID, url);
+            ConfirmOTPResponse deptObj = JsonSerializer.Deserialize<ConfirmOTPResponse>(jsonData);
+            return deptObj;
+        }
+
+        public ConfirmBuyingTicketResponse ConfirmBuyingTicketApi(IConfiguration configuration, ConfirmBuyingTicketRequest confirmBuyingTicketRequest)
+        {
+            confirmBuyingTicketRequest.serviceId = ApiConstants.SERVICE_ID;
+            confirmBuyingTicketRequest.channel = configuration.GetSection("channel").Value;
+
+            String url = configuration.GetSection("confirm_buying_ticket").Value;
+            String jsonData = SendPost(confirmBuyingTicketRequest, ApiConstants.SERVICE_ID, url);
+            ConfirmBuyingTicketResponse deptObj = JsonSerializer.Deserialize<ConfirmBuyingTicketResponse>(jsonData);
+            return deptObj;
+        }
+
+        public UserTicketResponse GetUserTicketApi(IConfiguration configuration, UserTicketRequest userTicketRequest)
+        {
+            userTicketRequest.serviceId = ApiConstants.SERVICE_ID;
+            userTicketRequest.channel = configuration.GetSection("channel").Value;
+
+            String url = configuration.GetSection("get_user_ticket").Value;
+            String jsonData = SendPost(userTicketRequest, ApiConstants.SERVICE_ID, url);
+            UserTicketResponse deptObj = JsonSerializer.Deserialize<UserTicketResponse>(jsonData);
+            return deptObj;
+        }
+
+        public GetTopWininerResponse GetTopWinnerApi(IConfiguration configuration, GetTopWinnerRequest userTicketRequest)
+        {
+            userTicketRequest.serviceId = ApiConstants.SERVICE_ID;
+
+            String url = configuration.GetSection("get_top_winner").Value;
+            String jsonData = SendPost(userTicketRequest, ApiConstants.SERVICE_ID, url);
+            GetTopWininerResponse deptObj = JsonSerializer.Deserialize<GetTopWininerResponse>(jsonData);
+            return deptObj;
+        }
+
+        //public AutoLoginResponse AutoLoginApi(IConfiguration configuration, AutoLoginRequest request)
+        //{
+        //    String url = configuration.GetSection("auto_login").Value;
+        //    String jsonData = SendPostObj(request, ApiConstants.SERVICE_ID, url);
+        //    AutoLoginResponse deptObj = JsonSerializer.Deserialize<AutoLoginResponse>(jsonData);
+        //    return deptObj;
+        //}
+
+        public async Task<AutoLoginResponse> AutoLoginApiAsync(IConfiguration configuration, AutoLoginRequest request)
+        {
+            String url = configuration.GetSection("auto_login").Value;
+            String jsonData = await SendFormDataPostAsync(request.token, url);
+            //String jsonData = "{\"code\":200,\"message\":\"Success\",\"data\":{\"tokenGame\":\"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ1c2VySW5mb3IiLCJleHAiOjE3MDU1NTIzODgsInV1aWQiOiI2ZmQ1MWE0YzcyNzAxMTBmMzViNTFjODUyNTAwZjZmOSJ9.1cg95nEMdFTZRaccKDw7cVWArfXXq2JkSY6WrOos7Tg\",\"msisdn\":\"+50942133007\",\"name\":\"Test 007 Julyy May Skuhyu\",\"birthday\":\"1999-02-25\"}}";
+            //String jsonData = "{\"code\":200,\"message\":\"Success\",\"data\":{\"tokenGame\":\"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ1c2VySW5mb3IiLCJleHAiOjE3MDU1NTIzODgsInV1aWQiOiI2ZmQ1MWE0YzcyNzAxMTBmMzViNTFjODUyNTAwZjZmOSJ9.1cg95nEMdFTZRaccKDw7cVWArfXXq2JkSY6WrOos7Tg\",\"msisdn\":\"+50955797979\",\"name\":\"Test 007 Julyy May Skuhyu\",\"birthday\":\"1999-02-25\"}}";
+
+            //"{ "code":200,"message":"Success","data":{ "tokenGame":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ1c2VySW5mb3IiLCJleHAiOjE3MTAzODE0NTksInV1aWQiOiI1MGEwYjNlNzk5ZjllZDU3YTE1ZjZjNjljODVmYTM3NSJ9.EgR-P_KzsHJ1XCdgeu25Gy_-qAHOfM9uv9RTZSvr0AA","msisdn":"+50955797979","name":"Morgan Dinh","birthday":"1983-06-23"} }
+            AutoLoginResponse deptObj = JsonSerializer.Deserialize<AutoLoginResponse>(jsonData);
+            return deptObj;
+        }
+
+        public CheckAccountResponse CheckAccountApi(IConfiguration configuration, CheckAccountRequest checkAccountRequest)
+        {
+            checkAccountRequest.serviceId = ApiConstants.SERVICE_ID;
+
+            String url = configuration.GetSection("check_account").Value;
+            String jsonData = SendPost(checkAccountRequest, ApiConstants.SERVICE_ID, url);
+            CheckAccountResponse deptObj = JsonSerializer.Deserialize<CheckAccountResponse>(jsonData);
+            return deptObj;
+        }
+
+        private async Task<string> SendFormDataPostAsync(string token, String url)
+        {
+
+            log.Debug(url);
+            log.Debug("Request token: " + token);
+
+            var parameters = new Dictionary<string, string>();
+            parameters.Add("token", token);
+
+            using (HttpClient client = new HttpClient())
+            {
+                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
+
+                HttpResponseMessage response = client.PostAsync(url, new FormUrlEncodedContent(parameters)).Result;
+                var responseString = response.Content.ReadAsStringAsync().Result;
+
+                log.Debug("Response: " + responseString);
+                return responseString;
+            }
+        }
+
+        private String SendPost(Posting obj, String serviceId, String url)
+        {
+            // get configuration
+
+            obj.serviceId = serviceId;
+            obj.SV_ID = serviceId;
+            obj.service_id = serviceId;
+
+            var json = JsonConvert.SerializeObject(obj);
+            var data = new StringContent(json, Encoding.UTF8, "application/json");
+
+            log.Debug(url);
+            log.Debug("Request: " + json);
+
+            using (var client = new HttpClient())
+            {
+                var response = client.PostAsync(url, data).Result;
+                if (response.IsSuccessStatusCode)
+                {
+                    var responseContent = response.Content;
+                    // by calling .Result you are synchronously reading the result
+                    string responseString = responseContent.ReadAsStringAsync().Result;
+                    log.Debug("Response: " + responseString);
+                    return responseString;
+                }
+                else
+                {
+                    log.Error("Response: " + response.StatusCode.ToString());
+                    return response.StatusCode.ToString();
+                }
+            }
+        }
+
+        private String SendPostObj(Object obj, String serviceId, String url)
+        {
+            var json = JsonConvert.SerializeObject(obj);
+            var data = new StringContent(json, Encoding.UTF8, "application/json");
+
+            log.Debug(url);
+            log.Debug("Request: " + json);
+
+            using (var client = new HttpClient())
+            {
+                var response = client.PostAsync(url, data).Result;
+                if (response.IsSuccessStatusCode)
+                {
+                    var responseContent = response.Content;
+                    // by calling .Result you are synchronously reading the result
+                    string responseString = responseContent.ReadAsStringAsync().Result;
+                    log.Debug("Response: " + responseString);
+                    return responseString;
+                }
+                else
+                {
+                    log.Error("Response: " + response.StatusCode.ToString());
+                    return response.StatusCode.ToString();
+                }
+            }
+        }
+    }
+
+
+
+}

+ 364 - 0
website/Service/ApiModels.cs

@@ -0,0 +1,364 @@
+using System.Collections.Generic;
+
+namespace LotteryWebApp.Service
+{
+    public class RegisterRequest : Posting
+    {
+        public string Msisdn { get; set; }
+        public string Users { get; set; }
+        public string pass { get; set; }
+        public string Passnew { get; set; }
+        public string serviceId { get; set; }
+        public string Command { get; set; }
+        public string Channel { get; set; }
+        public string Role { get; set; }
+        public string token { get; set; }
+        public string channel { get; set; }
+
+
+    }
+    public class RegisterResponse
+    {
+        public string role { get; set; }
+        public string token { get; set; }
+        public string status { get; set; }
+        public string message { get; set; }
+    }
+
+
+
+    public class UserCheckStatusRequest : Posting
+    {
+        public string users { get; set; }
+        public string serviceId { get; set; }
+        public string language { get; set; }
+        public string channel { get; set; }
+        public string token { get; set; }
+    }
+    public class UserCheckStatusResponse
+    {
+        public string status { get; set; }
+        public string message { get; set; }
+        public string id { get; set; }
+        public string msisdn { get; set; }
+        public string users { get; set; }
+        public string pass { get; set; }
+        public string serviceid { get; set; }
+        public string dateregist { get; set; }
+        public string isactive { get; set; }
+        public string channel { get; set; }
+        public string bet_coin { get; set; }
+        public string cash_coin { get; set; }
+        public string role { get; set; }
+        public string language { get; set; }
+    }
+
+    public class GetServiceRequest : Posting
+    {
+        public string type { get; set; }
+        public string token { get; set; }
+        public string Channel { get; set; }
+        public string language { get; set; }
+    }
+    public class GetServiceResponse
+    {
+        public string status { get; set; }
+        public string message { get; set; }
+        public List<Service> listSubService { get; set; }
+    }
+
+    public class UserUpdateProfileRequest : Posting
+    {
+        public string users { get; set; }
+        public string serviceId { get; set; }
+        public string fullName { get; set; }
+        public string picture { get; set; }
+        public string birthday { get; set; }
+        public string token { get; set; }
+        public string Channel { get; set; }
+        public string language { get; set; }
+        public string channel { get; set; }
+
+    }
+    public class UserUpdateProfileResponse
+    {
+        public string status { get; set; }
+        public string message { get; set; }
+    }
+
+    public class UserGetProfileRequest : Posting
+    {
+        public string usersQuery { get; set; }
+        public string users { get; set; }
+        public string serviceId { get; set; }
+        public string token { get; set; }
+        public string channel { get; set; }
+        public string language { get; set; }
+    }
+
+
+    public class UserPicUploadRequest : Posting
+    {
+        public string users { get; set; }
+        public string serviceId { get; set; }
+        public string url { get; set; }
+        public string token { get; set; }
+        public string Channel { get; set; }
+        public string language { get; set; }
+        public string channel { get; set; }
+
+    }
+    public class UserPicUploadResponse
+    {
+        public string status { get; set; }
+        public string message { get; set; }
+    }
+
+
+    public class ResultOfTermRequest : Posting
+    {
+        public string gameId { get; set; }
+        public string language { get; set; }
+        public string channel { get; set; }
+        public string token { get; set; }
+        public string id { get; set; }
+        public string type { get; set; }
+        public string fromDate { get; set; }
+        public string toDate { get; set; }
+        public string order { get; set; }
+        public string rowsOnPage { get; set; }
+        public string seqPage { get; set; }
+
+    }
+    public class ResultOfTermResponse
+    {
+        public string rowsOnPage { get; set; }
+        public string seqPage { get; set; }
+        public string totalPage { get; set; }
+        public string totalRow { get; set; }
+        public string gameId { get; set; }
+        public List<Term> listTerm { get; set; }
+        public string responseCode { get; set; }
+        public string responseMessage { get; set; }
+    }
+
+    public class UserStatusRequest : Posting
+    {
+        public string users { get; set; }
+        public string serviceId { get; set; }
+        public string language { get; set; }
+        public string channel { get; set; }
+        public string token { get; set; }
+    }
+
+    public class TransferMoneyRequest : Posting
+    {
+        public string msisdn { get; set; }
+        public string msisdnReceive { get; set; }
+        public string money { get; set; }
+        public string channelPayment { get; set; }
+        public string language { get; set; }
+        public string channel { get; set; }
+        public string serviceId { get; set; }
+        public string token { get; set; }
+        public string otp { get; set; }
+
+    }
+
+    public class TransferMoneyResponse
+    {
+        public string paymentCode { get; set; }
+        public string responseCode { get; set; }
+        public string responseMessage { get; set; }
+    }
+
+    public class SendOTPRequest : Posting
+    {
+        public string msisdn { get; set; }
+        public string language { get; set; }
+        public string channel { get; set; }
+        public string serviceId { get; set; }
+        public string token { get; set; }
+
+    }
+
+    public class SendOTPResponse
+    {
+        public string responseCode { get; set; }
+        public string responseMessage { get; set; }
+    }
+
+    public class TransactionInfoRequest : Posting
+    {
+        public string id { get; set; }
+        public string msisdn { get; set; }
+        public string language { get; set; }
+        public string channel { get; set; }
+        public string serviceId { get; set; }
+        public string token { get; set; }
+        public string type { get; set; }
+        public string fromDate { get; set; }
+        public string toDate { get; set; }
+        public string order { get; set; }
+        public string rowsOnPage { get; set; }
+        public string seqPage { get; set; }
+
+    }
+
+    public class TransactionInfoResponse
+    {
+        public string rowsOnPage { get; set; }
+        public string seqPage { get; set; }
+        public string totalPage { get; set; }
+        public string totalRow { get; set; }
+        public string responseCode { get; set; }
+        public string responseMessage { get; set; }
+        public List<Transaction> list { get; set; }
+
+    }
+
+    public class ConfirmTicketDataRequest : Posting
+    {
+        public string requestId { get; set; }
+        public string msisdn { get; set; }
+        public string language { get; set; }
+        public string channel { get; set; }
+        public string serviceId { get; set; }
+        public string token { get; set; }
+        public string gameId { get; set; }
+        public string promotionCode { get; set; }
+        public List<TicketInfo> ticket { get; set; }
+    }
+
+    public class ConfirmTicketDataResponse
+    {
+        public string requestId { get; set; }
+        public TermObj termObj { get; set; }
+        public string isPromotion { get; set; }
+        public string totalMoney { get; set; }
+        public string totalMoneyPromotion { get; set; }
+        public string promotionId { get; set; }
+        public string transId { get; set; }
+        public string responseCode { get; set; }
+        public string responseMessage { get; set; }
+    }
+
+    public class ConfirmBuyingTicketRequest : Posting
+    {
+        public string requestId { get; set; }
+        public string msisdn { get; set; }
+        public string language { get; set; }
+        public string channel { get; set; }
+        public string serviceId { get; set; }
+        public string token { get; set; }
+        public string paymentCode { get; set; }
+        public string transIdByTicket { get; set; }
+    }
+
+    public class ConfirmBuyingTicketResponse
+    {
+        public string requestId { get; set; }
+        public string orderId { get; set; }
+        public string listTiketId { get; set; }
+        public string transId { get; set; }
+        public string responseCode { get; set; }
+        public string responseMessage { get; set; }
+    }
+
+    public class ConfirmOTPRequest : Posting
+    {
+        public string otp { get; set; }
+        public string msisdn { get; set; }
+        public string language { get; set; }
+        public string channel { get; set; }
+        public string serviceId { get; set; }
+        public string token { get; set; }
+    }
+
+    public class ConfirmOTPResponse
+    {
+        public string responseCode { get; set; }
+        public string responseMessage { get; set; }
+    }
+
+    public class UserTicketRequest : Posting
+    {
+        public string gameId { get; set; }
+        public string msisdn { get; set; }
+        public string language { get; set; }
+        public string channel { get; set; }
+        public string serviceId { get; set; }
+        public string token { get; set; }
+        public string id { get; set; }
+        public string type { get; set; }
+        public string order { get; set; }
+        public string rowsOnPage { get; set; }
+        public string seqPage { get; set; }
+
+    }
+
+    public class GetTopWinnerRequest : Posting
+    {
+        public string type { get; set; }
+        public string token { get; set; }
+
+    }
+
+    public class UserTicketResponse
+    {
+        public string responseCode { get; set; }
+        public string responseMessage { get; set; }
+        public string rowsOnPage { get; set; }
+        public string seqPage { get; set; }
+        public string totalPage { get; set; }
+        public List<Ticket> listTicket { get; set; }
+
+    }
+
+    public class GetTopWininerResponse
+    {
+        public string responseCode { get; set; }
+        public string responseMessage { get; set; }
+        public string rowsOnPage { get; set; }
+        public string seqPage { get; set; }
+        public string totalPage { get; set; }
+        public string list { get; set; }
+    }
+
+    public class AutoLoginRequest
+    {
+        public string token { get; set; }
+
+    }
+
+    public class AutoLoginResponse
+    {
+        public int code { get; set; }
+        public string message { get; set; }
+        public AutoLoginData data { get; set; }
+    }
+
+    public class AutoLoginData
+    {
+        public string tokenGame { get; set; }
+        public string msisdn { get; set; }
+        public string name { get; set; }
+        public string birthday { get; set; }
+    }
+
+    public class CheckAccountRequest : Posting
+    {
+        public string msisdn { get; set; }
+        public string language { get; set; }
+        public string channel { get; set; }
+    }
+
+    public class CheckAccountResponse
+    {
+        public string status { get; set; }
+        public string message { get; set; }
+        public string function { get; set; }
+        public string token { get; set; }
+        public string role { get; set; }
+    }
+}

+ 132 - 0
website/Startup.cs

@@ -0,0 +1,132 @@
+using Microsoft.AspNetCore.Authentication.Cookies;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.HttpsPolicy;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.FileProviders;
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Options;
+using LotteryWebApp.Extensions;
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Threading.Tasks;
+using LotteryWebApp.Common;
+
+namespace LotteryWebApp
+{
+    public class Startup
+    {
+        readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
+
+        public Startup(IConfiguration configuration)
+        {
+            Configuration = configuration;
+        }
+
+        public IConfiguration Configuration { get; }
+
+        // This method gets called by the runtime. Use this method to add services to the container.
+        public void ConfigureServices(IServiceCollection services)
+        {
+            //services.AddControllersWithViews();
+            services.AddSingleton<IConfiguration>(Configuration);
+            services.AddMvc().AddRazorOptions(options =>
+            {
+                options.ViewLocationFormats.Add("/{0}.cshtml");
+            });
+
+            services.AddCors(options =>
+            {
+                options.AddPolicy(name: MyAllowSpecificOrigins,
+                                  builder =>
+                                  {
+                                      builder.AllowAnyOrigin()
+                                             .AllowAnyMethod()
+                                             .AllowAnyHeader();
+                                  });
+            });
+
+
+            services.Configure<RequestLocalizationOptions>(options =>
+            {
+                var cultures = new List<CultureInfo> {
+                    new CultureInfo("fr"),
+                    new CultureInfo("en")
+                };
+                options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("fr");
+                options.SupportedCultures = cultures;
+                options.SupportedUICultures = cultures;
+            });
+
+            //.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
+            //.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
+            services.AddAntiforgery(o => o.HeaderName = "XSRF-TOKEN");
+            services.AddDistributedMemoryCache(); // Adds a default in-memory implementation of IDistributedCache
+            services.AddSession(options =>
+            {
+                options.IdleTimeout = TimeSpan.FromSeconds(600);
+                options.Cookie.HttpOnly = true;
+                options.Cookie.IsEssential = true;
+            });
+            //services.AddSession();
+            services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie();
+            services.AddHttpContextAccessor();
+            services.AddMvc(options =>
+            {
+                options.Filters.Add(new ConfigAction(
+                    Configuration.GetSection("MyConfig")
+                ));
+            });
+
+            //services.AddAuthentication()
+            //    .AddJwtBearer(options =>
+            //    {
+            //        // your other config
+            //        options.SaveToken = true;
+            //    });
+        }
+
+        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
+        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
+        {
+            if (env.IsDevelopment())
+            {
+                app.UseDeveloperExceptionPage();
+            }
+            else
+            {
+                app.UseExceptionHandler("/Home/Error");
+                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
+                app.UseHsts();
+            }
+            app.UseSession();
+            app.UseCookiePolicy();
+            app.UseHttpsRedirection();
+            app.UseStaticFiles();
+            //app.UseStaticFiles(new StaticFileOptions()
+            //{
+            //    FileProvider = new PhysicalFileProvider(Configuration.GetSection(Constants.PATH_OUTSIDE).Value),
+            //    RequestPath = new PathString("/outside")
+            //});
+
+            app.UseRequestLocalization(app.ApplicationServices.GetRequiredService<IOptions<RequestLocalizationOptions>>().Value);
+
+            app.UseCors(MyAllowSpecificOrigins);
+
+            app.UseRouting();
+
+            app.UseAuthorization();
+
+            app.UseEndpoints(endpoints =>
+            {
+                endpoints.MapControllerRoute(
+                    name: "default",
+                    pattern: "{controller=Home}/{action=Index}/{id?}");
+            });
+        }
+    }
+}

+ 96 - 0
website/Views/Account/ForgotPassword.cshtml

@@ -0,0 +1,96 @@
+@{
+    ViewData["Title"] = "ForgotPassword";
+    Layout = "~/Views/Shared/_NothingLayout.cshtml";
+}
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Common;
+
+@model AccountForgotPassword_ViewModel
+
+<div class="app-content content">
+
+    <div class="card-title text-center ">
+        <div class="news-button-header-container" style="text-align: start; margin: 0 10px;">
+            @await Component.InvokeAsync("SmallHeader", new { title = Lang.forgot_password.ToUpper()})
+        </div>
+    </div>
+
+    <div class="content-wrapper">
+        <div class="content-header row">
+        </div>
+        <div class="content-body">
+            <section class="flexbox-container">
+                <div class="col-12 align-items-center justify-content-center">
+                    <div class="">
+                        @{
+                            if (Model.code != Code.SUCCESS.ToString())
+                            {
+                                <div class="card-header border-0 card-box">
+                                    <div class="card-title text-center ">
+                                        <div>
+                                            <div style="    margin-top: 50px;">
+                                                <img class="logo-app" src="~/img/Logo_Beelotto.png" />
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                            }
+                        }
+
+
+                        @{
+                            if (Model.code != Code.SUCCESS.ToString())
+                            {
+                                <fieldset class="form-group position-relative has-icon-left" style="margin:10px;">
+                                    <label>@Lang.fill_your_number</label>
+                                    <input type="number" class="data-input-box form-control" id="phonenumber" style="border-radius: 10px;"
+                                       placeholder="@Lang.enter_phone_number" name="phonenumber" required>
+
+                                    <div class="form-control-position" style="top: 35px;">
+                                        <i class="fa fa-user"></i>
+                                    </div>
+                                </fieldset>
+                            }
+                            else
+                            {
+                                <div class="card-header border-0 card-box center-box-container">
+                                    <div class="card-title text-center ">
+                                        <div>
+                                            <div style="    margin-top: 50px;">
+                                                <img class="logo-app inform-img" src="~/img/Group854.png" />
+                                            </div>
+
+                                            <div style="position: relative; margin-top: 10px;">
+                                                <h2 class="text-style-main-large">
+                                                    @Lang.success
+                                                </h2>
+                                            </div>
+
+                                            <div style="position: relative; margin-top: 10px;">
+                                                <h4 class="text-style-blue-normal">
+                                                    @Lang.your_password_reset
+                                                </h4>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                            }
+                        }
+                        <div class="row button-on-footer">
+                            <div class="col-12">
+                                <button type="submit" class="btn btn-outline-primary btn-block login-button"
+                                    onclick="forgotPasswordButtonAction_Click()">
+                                    <i class="ft-unlock"></i> @(Model.code != Code.SUCCESS.ToString() ? Lang._continue : Lang.login.ToUpper())
+                                </button>
+                            </div>
+                        </div>
+
+                    </div>
+                </div>
+            </section>
+        </div>
+    </div>
+</div>
+

+ 79 - 0
website/Views/Account/Index.cshtml

@@ -0,0 +1,79 @@
+@{
+    ViewData["Title"] = "Index";
+    Layout = "~/Views/Shared/_NothingLayout.cshtml";
+}
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+
+@model AccountIndex_ViewModel
+
+<div class="app-content content">
+    <div class="content-wrapper">
+        <div class="content-header row">
+        </div>
+        <div class="content-body">
+            <section class="flexbox-container" style="    margin-bottom: 10px;">
+                <div class="col-12 align-items-center justify-content-center">
+                    <div class="">
+                        <div class="card-header border-0 card-box">
+                            <div class="card-title text-center ">
+                                <div>
+                                    <div style="    margin-top: 50px;">
+                                        <img class="logo-app" src="~/img/Logo_Beelotto.png" />
+                                    </div>
+
+                                    <div>
+                                        <img class="logo-app" src="~/img/work_for.png" />
+                                    </div>
+
+                                    <div style="position: relative; margin-top: 10px;">
+                                        <h2 class="welcome-large">
+                                            @Lang.welcome_to_bee_loto
+                                        </h2>
+                                        <h5 class="intro-large">@Lang.bee_loto_intro</h5>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+
+
+                        <div class="row">
+                            <div class="col-12" style="margin-bottom:10px;">
+                                <button type="button" class="btn btn-outline-primary btn-block login-button login-button-action"
+                                        onclick="registerButton_Click();">
+                                    <i class="ft-unlock"></i> @Lang.get_started.ToUpper()
+                                </button>
+                            </div>
+                            <div class="col-12" style="margin-bottom:150px;">
+                                <button type="button" class="btn btn-outline-primary btn-block play-now-button"
+                                        onclick="loginButton_Click();">
+                                    <i class="ft-unlock"></i> @Lang.already_have_an_account.ToUpper()
+                                </button>
+
+                            </div>
+                        </div>
+
+                        <div>
+                            @await Component.InvokeAsync("FooterOutside", new { })
+                        </div>
+
+
+                    </div>
+                </div>
+            </section>
+        </div>
+    </div>
+</div>
+
+<script>
+    // auto login
+
+
+
+</script>
+
+<script>
+    stopLoading();
+</script>
+

+ 238 - 0
website/Views/Account/Login.cshtml

@@ -0,0 +1,238 @@
+@{
+    ViewData["Title"] = "Login";
+    Layout = "~/Views/Shared/_NothingLayout.cshtml";
+}
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Common;
+
+
+@model AccountLogin_ViewModel
+<style>
+    input {
+        font-size: 2em;
+    }
+
+        input:placeholder-shown {
+            font-size: 1em !important;
+        }
+</style>
+
+@{
+    if(Model.message != null)
+    {
+        <script>
+            toastr.error('@Model.message');
+        </script>
+    }
+}
+
+<div class="app-content content">
+    @{
+        //if (Model.step == Constants.LOGIN_ENTER_OTP)
+        //{
+        //    <div class="card-title text-center ">
+        //        <div class="news-button-header-container" style="text-align: start; margin: 0 10px;">
+        //            @await Component.InvokeAsync("SmallHeader", new { title = @Lang.confirm_otp})
+        //        </div>
+        //    </div>
+        //}
+    }
+
+    <div class="content-wrapper">
+        <div class="content-header row">
+        </div>
+        <div class="content-body">
+            <section class="flexbox-container">
+                <div class="col-12 align-items-center justify-content-center">
+                    <div class="">
+
+
+                        <div class="lottery-msisdn-box-container">
+
+                            @{
+                                if (Model.step == Constants.LOGIN_ENTER_MSISDN)
+                                {
+                                    <style>
+                                        input {
+                                            font-size: 16px;
+                                        }
+
+                                        input[type="text"]:focus,
+                                        input[type="number"]:focus,
+                                        input[type="email"]:focus,
+                                        input[type="tel"]:focus,
+                                        input[type="password"]:focus {
+                                            font-size: 16px;
+                                            }
+                                    </style>
+                                    <div class="card-header border-0 card-box">
+                                        <div class="card-title text-center ">
+                                            <div>
+                                                <div style="    margin-top: 50px;">
+                                                    <img class="logo-app logo-start" src="~/img/Group 83968 (1).png" />
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </div>
+
+                                    <fieldset class="form-group position-relative has-icon-left lottery-msisdn-container" style="    margin: 100px 30px 20px 30px;">
+                                        <input type="number" class="data-input-box form-control lottery-msisdn-input" id="phonenumber" style="border-radius: 5px;    padding-left: calc(4.75rem + 2px)"
+                                           placeholder="@Lang.enter_phone_number" name="phonenumber" required>
+
+                                        <div class="form-control-position lottery-msisdn-box">
+                                            <a href="#" class="">+509</a>
+                                        </div>
+                                    </fieldset>
+
+                                }
+                            }
+                            @{
+                                if (Model.step == Constants.LOGIN_ENTER_OTP)
+                                {
+
+                                    <div class="lottery-des-container">
+                                        <h2>@Lang.verify_otp</h2>
+                                        <h4>@Lang.enter_otp_to_login</h4>
+                                    </div>
+                                    <style>
+                                        input[type="text"]:focus,
+                                        input[type="number"]:focus,
+                                        input[type="email"]:focus,
+                                        input[type="tel"]:focus,
+                                        input[type="password"]:focus {
+                                            font-size: 25px;
+                                        }
+
+                                        [placeholder]:focus::-webkit-input-placeholder {
+                                            transition: opacity 0.5s 0.0s ease;
+                                            opacity: 0;
+                                        }
+                                    </style>
+                                    <div class="lottery-otp-container" style="    margin: 30px;  margin-right: 30px;">
+                                        <form action="/verify-otp" method="POST">
+                                            <input class="lottery-otp-box otp-box-0" pattern="\d{1}" inputmode="numeric" name="lottery-otp-box" size="1" autofocus="autofocus" type="text" required oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" maxlength="1" />
+                                            <input class="lottery-otp-box otp-box-1" pattern="\d{1}" inputmode="numeric" name="lottery-otp-box" size="1" autofocus="autofocus" type="text" required oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" maxlength="1" />
+                                            <input class="lottery-otp-box otp-box-2" pattern="\d{1}" inputmode="numeric" name="lottery-otp-box" size="1" autofocus="autofocus" type="text" required oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" maxlength="1" />
+                                            <input class="lottery-otp-box otp-box-3" pattern="\d{1}" inputmode="numeric" name="lottery-otp-box" size="1" autofocus="autofocus" type="text" required oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" maxlength="1" />
+                                        </form>
+                                    </div>
+                                    //<input type="text"
+                                    //   inputmode="numeric"
+                                    //   autocomplete="one-time-code"
+                                    //   pattern="\d{6}"
+                                    //   required>
+                                    <script>
+                                        var container = document.getElementsByClassName("lottery-otp-container")[0];
+                                        container.onkeyup = function(e) {
+                                            var target = e.srcElement;
+                                            var maxLength = parseInt(target.attributes["maxlength"].value, 10);
+                                            var myLength = target.value.length;
+                                            if (myLength >= maxLength) {
+                                                var next = target;
+                                                while (next = next.nextElementSibling) {
+                                                    if (next == null)
+                                                        break;
+                                                    if (next.tagName.toLowerCase() == "input") {
+                                                        next.focus();
+                                                        break;
+                                                    }
+                                                }
+                                            }
+                                        }
+
+
+                                          $(document).ready(function(){
+                                            $('body').on('keyup', 'input.lottery-otp-box', function(e){
+                                              var inputs = $('input.lottery-otp-box');
+
+                                              if(e.keyCode == 8){
+                                                var index = inputs.index(this);
+                                                if (index != 0)
+                                                    inputs.eq(index - 1).val('').focus();
+                                              }
+                                              else{
+                                              if($(this).val().length === this.size){
+                                                inputs.eq(inputs.index(this) + 1).focus();
+                                              }
+                                              }
+                                            });
+
+                                          });
+
+
+                                        if ('OTPCredential' in window) {
+                                            window.addEventListener('DOMContentLoaded', e => {
+                                            //const input = document.querySelector('input[autocomplete="one-time-code"]');
+                                            if (!input) return;
+                                            // Cancel the Web OTP API if the form is submitted manually.
+                                            const ac = new AbortController();
+                                            const form = input.closest('form');
+                                            if (form) {
+                                                form.addEventListener('submit', e => {
+                                                // Cancel the Web OTP API.
+                                                ac.abort();
+                                                });
+                                            }
+                                            // Invoke the Web OTP API
+                                            navigator.credentials.get({
+                                                otp: { transport:['sms'] },
+                                                signal: ac.signal
+                                            }).then(otp => {
+                                                //input.value = otp.code;
+                                                console.log("otp.code: " + otp.code);
+                                                const myArray = text.split("");
+                                                $(".otp-box-0").val(myArray[0]);
+                                                $(".otp-box-1").val(myArray[1]);
+                                                $(".otp-box-2").val(myArray[2]);
+                                                $(".otp-box-3").val(myArray[3]);
+                                                // Automatically submit the form when an OTP is obtained.
+                                                if (form) form.submit();
+                                            }).catch(err => {
+                                                console.log(err);
+                                            });
+                                            });
+                                        }
+                                    </script>
+                                }
+                            }
+                            <span class="text-danger"></span>
+
+                            <div style="margin: 10px 30px;">
+                                <button type="submit" class="btn btn-outline-primary btn-block login-button login-button-action"
+                                        onclick="@(Model.step == Constants.LOGIN_ENTER_MSISDN ? "loginRedirect_Click()" : "loginButtonAction_Click()")">
+                                    <i class="ft-unlock"></i>@(Model.step == null ? Lang.get_otp1.ToUpper() : Lang.confirm.ToUpper())
+                                </button>
+                            </div>
+
+                            @{
+                                if (Model.step == Constants.LOGIN_ENTER_OTP)
+                                {
+                                    <div style="text-align: center; margin-top: 30px;">
+                                        <h4 style="color:black;">@Lang.not_get_otp <a style="font-weight:900;" onclick="resentOTP_Action()">@Lang.resend_otp</a></h4>
+                                    </div>
+                                }
+                                else
+                                {
+                                    <div>
+                                        @await Component.InvokeAsync("FooterOutside", new { })
+                                    </div>
+                                }
+                            }
+
+
+                        </div>
+                    </div>
+                </div>
+            </section>
+        </div>
+    </div>
+</div>
+
+@*<script type="text/javascript">
+    function createAccountClick(message) {
+    toastr.options.timeOut = 5000; // 1.5s
+    toastr.error(message);
+    }
+    </script>*@

+ 134 - 0
website/Views/Account/Register.cshtml

@@ -0,0 +1,134 @@
+@{
+    ViewData["Title"] = "Register";
+    Layout = "~/Views/Shared/_NothingLayout.cshtml";
+}
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Common;
+
+@model AccountRegister_ViewModel
+
+
+<div class="app-content content" style="position:relative">
+    @*    <div class="float-button-navigator" onclick="function() => window.location.href = '@ViewBag.MyConfig.MyValue/Home/Login'">
+        <a href="@ViewBag.MyConfig.MyValue/Home/Login">
+        <img class="float-button-icon" src="~/images/icons8-back-50.png" />
+        </a>
+        </div>*@
+
+    <div class="card-title text-center ">
+        <div class="news-button-header-container" style="text-align: start; margin: 0 10px;">
+            @await Component.InvokeAsync("SmallHeader", new { title = Lang.register.ToUpper()})
+        </div>
+    </div>
+
+    <div class="content-wrapper" style="margin-top:80px;">
+        <div class="content-body">
+            <section class="flexbox-container">
+                <div class="col-12 align-items-center justify-content-center">
+                    <div class="">
+
+                        <form class="form-horizontal" action="@ViewBag.MyConfig.MyValue/Account/Register" method="post">
+                            @Html.AntiForgeryToken()
+                            @{
+                                if (Model.code != Code.SUCCESS.ToString())
+                                {
+                                    <fieldset class="form-group position-relative has-icon-left">
+                                        <label>@Lang.phone_number</label>
+                                        <input type="number" class="data-input-box form-control" id="phonenumber" placeholder="@Lang.enter_phone_number" name="phonenumber" required>
+
+                                        <div class="form-control-position" style="top: 35px;">
+                                            <i class="fa fa-user"></i>
+                                        </div>
+                                    </fieldset>
+
+                                    <fieldset class="form-group position-relative has-icon-left">
+                                        <label>@Lang.name</label>
+                                        <input type="text" class="data-input-box form-control" id="fullname" placeholder="@Lang.enter_name" name="fullname" required>
+
+                                        <div class="form-control-position" style="top: 35px;">
+                                            <i class="fa fa-user"></i>
+                                        </div>
+                                    </fieldset>
+
+                                    <fieldset class="form-group position-relative has-icon-left">
+                                        <label>@Lang.dateOfBirth</label>
+                                        <input type="date" class="data-input-box form-control" id="birthday" placeholder="@Lang.dateOfBirth" name="birthday" required>
+                                        <div class="form-control-position" style="top: 35px;">
+                                            <i class="fa fa-key"></i>
+                                        </div>
+                                    </fieldset>
+                                }
+                                //else if (Model.step == 2)
+                                //{
+                                //    <fieldset class="form-group position-relative has-icon-left">
+                                //        <label>@Lang.password</label>
+                                //        <input type="password" class="data-input-box form-control" id="password" placeholder="@Lang.enter_password" name="password" required>
+
+                                //        <div class="form-control-position" style="top: 35px;">
+                                //            <i class="fa fa-key"></i>
+                                //        </div>
+                                //    </fieldset>
+
+                                //    <div>
+                                //        <div>
+                                //            @Lang.password_tip
+                                //        </div>
+                                //        <div>
+                                //            @Lang.pass_tip_1
+                                //        </div>
+                                //        <div>
+                                //            @Lang.pass_tip_2
+                                //        </div>
+                                //        <div class="green-text">
+                                //            @Lang.note_password
+                                //        </div>
+                                //    </div>
+                                //}
+                                else
+                                {
+                                    <div class="card-header border-0 card-box">
+                                        <div class="card-title text-center ">
+                                            <div>
+                                                <div style="    margin-top: 50px;">
+                                                    <img class="logo-app" src="~/img/Group854.png" />
+                                                </div>
+
+                                                <div style="position: relative; margin-top: 10px;">
+                                                    <h2 class="text-style-main-large">
+                                                        @Lang.success
+                                                    </h2>
+                                                </div>
+
+                                                <div style="position: relative; margin-top: 10px;">
+                                                    <h4 class="text-style-blue-normal">
+                                                        @Lang.you_have_registered_Bee_loto
+                                                    </h4>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </div>
+                                }
+                            }
+
+                            <div class="row button-on-footer" style="margin-top:50px;">
+                                <div class="col-12">
+                                    <button type="button" class="btn btn-outline-primary btn-block login-button"
+                                    onclick="@(Model.code == Code.SUCCESS.ToString() ? "navigatorClick('Home')" : "registerButtonAction_Click()")">
+                                        <i class="ft-unlock"></i> @(Model.code == Code.SUCCESS ? Lang.start_using_bee_loto : Lang._continue)
+                                    </button>
+                                </div>
+                            </div>
+                        </form>
+
+                    </div>
+                </div>
+            </section>
+        </div>
+    </div>
+</div>
+
+<script>
+    stopLoading();
+</script>

+ 144 - 0
website/Views/BuyTicket/Choose.cshtml

@@ -0,0 +1,144 @@
+@{
+    ViewData["Title"] = "ChooseNumber";
+    Layout = "~/Views/Shared/_NothingLayout.cshtml";
+}
+
+
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Common;
+@using System.Globalization;
+
+@model BuyTicketChoose_ViewModel
+
+@{
+    String dateTo = DateTime.Now.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);
+}
+
+<div class="app-content content" style="position:relative">
+    <div class="card-title text-center ">
+        <div class="news-button-header-container" style="text-align: start; margin: 0 10px;">
+            @await Component.InvokeAsync("SmallHeader", new { title =
+            Model.ticketType == Constants.BOLET_CODE? Lang.buy_bolet.ToUpper() :
+            Model.ticketType == Constants.MAYRAJ_CODE ?Lang.buy_maryaj.ToUpper() :
+            Model.ticketType == Constants.BOULCHANS_CODE ? "BOULCHANS" :
+            Lang.buy_lotto3.ToUpper()  })
+        </div>
+    </div>
+
+    <div class="content-wrapper" style="margin-top:80px; margin-bottom:70px;">
+        <div class="content-body">
+            <section class="flexbox-container">
+                <div class="col-12 align-items-center justify-content-center">
+
+                    <div class="header-choose-container">
+                        <div class="row">
+                            <div class="col-6 date-choose-box">
+                                <h5>@Lang.date_purchase</h5>
+                            </div>
+                            <div class="col-6 date-choose-box">
+                                <div class="date-choose">
+                                    <input type="date" value="@dateTo" style="font-size:16px;    pointer-events: none;" />
+                                </div>
+                            </div>
+                            <div class="col-6 button-choose-box">
+                                <button type="button" class="btn btn-outline-primary btn-block button-style-3"
+                                        onclick="cleanAllTicket_Click()">
+                                    <img src="~/img/broom 1.png" /> @Lang.clean_all.ToUpper()
+                                </button>
+                            </div>
+                            <div class="col-6 button-choose-box">
+                                <button type="button" class="btn btn-outline-primary btn-block button-style-3"
+                                        onclick="autoFillAllTicket_Click('@Model.ticketType')">
+                                    <img src="~/img/autofill.png" /> @Lang.auto_fill.ToUpper()
+                                </button>
+                            </div>
+                        </div>
+                    </div>
+
+
+                    <div class="ticket-list">
+                        <div>
+                            @await Component.InvokeAsync("ChooseForm", new {ticketType = Model.ticketType })
+                        </div>
+                        @*                        <div>
+                        @await Component.InvokeAsync("ChooseForm", new {ticketType = Model.ticketType })
+                        </div>
+                        <div>
+                        @await Component.InvokeAsync("ChooseForm", new {ticketType = Model.ticketType })
+                        </div>
+                        <div>
+                        @await Component.InvokeAsync("ChooseForm", new {ticketType = Model.ticketType })
+                        </div>*@
+                    </div>
+
+
+                    <div class="row button-on-footer" style="margin-top:50px;">
+                        <div class="col-6">
+                            <button type="button" class="btn btn-outline-primary btn-block button-style-2 button-add-more"
+                                    onclick="addTicket_Click('@Model.ticketType')">
+                                <i class="ft-unlock"></i> @Lang.add_more_order.ToUpper()
+                            </button>
+                        </div>
+                        <div class="col-6">
+                            <form class="form-horizontal" action="@ViewBag.MyConfig.MyValue/BuyTicket/Payment" method="post">
+                                @Html.AntiForgeryToken()
+                                <button type="button" class="btn btn-outline-primary btn-block login-button"
+                                        onclick="buyTicketConfirmButton_Click('@Model.ticketType')">
+                                    <i class="ft-unlock"></i> @Lang.payment.ToUpper()
+                                </button>
+                            </form>
+                        </div>
+                    </div>
+
+
+                </div>
+            </section>
+        </div>
+    </div>
+</div>
+
+<script>
+    stopLoading();
+</script>
+
+
+<script>
+    function addTicket_Click(ticketType) {
+        console.log("add");
+        // kiem tra toi da 5 ve
+        var elements = document.getElementsByClassName("ticket-buy-number");
+        if (elements.length >= 5) {
+            toastr.error('@Lang.max_5_tickets');
+            $(".button-add-more").prop('disabled', true);
+            $(".button-add-more").addClass('prevent-click');
+        } else {
+            $(".button-add-more").prop('disabled', false);
+            $(".button-add-more").removeClass('prevent-click');
+
+            let subDomain = $("#subDomain").val();
+            let otpUrl = subDomain + '/BuyTicket/AddTicket_Action'
+            startLoading();
+            $.ajax({
+                type: "POST",
+                url: otpUrl,
+                headers: { 'RequestVerificationToken': $('input[name=__RequestVerificationToken]').val() },
+                data: {
+                    "__RequestVerificationToken": $('input[name=__RequestVerificationToken]').val(),
+                    ticketType: ticketType,
+                },
+                success: function(data) {
+                    stopLoading();
+                    $(".ticket-list").append(data)
+                },
+                failure: function(data) {
+                    stopLoading();
+                },
+                error: function(data) {
+                    stopLoading();
+                }
+            });
+        }
+    }
+</script>

+ 84 - 0
website/Views/BuyTicket/Index.cshtml

@@ -0,0 +1,84 @@
+@{
+    ViewData["Title"] = "BuyTicket";
+    Layout = "~/Views/Shared/_Layout.cshtml";
+}
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Common;
+
+@model BuyTicket_ViewModel
+
+
+<div class="app-content content" style="position:relative">
+
+    <div class="card-title text-center ">
+        <div class="news-button-header-container" style="text-align: start; margin: 0 10px;">
+            @await Component.InvokeAsync("SmallHeader", new { title = Lang.buy_ticket.ToUpper()})
+        </div>
+    </div>
+
+    <div class="content-wrapper buy-ticket-container" style="margin-top:65px;">
+        <div class="content-body">
+            <section class="flexbox-container">
+
+                <div class="row tabs-style" style="    margin-top: 30px;">
+                    <div class="col-4 tab-style">
+                        <input type="radio" id="tab-1" name="tab-group-1" @(Model.termType == Constants.NEW_YORK_BOLET_CODE ? "checked" : "")>
+                        <label for="tab-1">
+                            <a style="font-size: 11px;" href="@ViewBag.MyConfig.MyValue/BuyTicket?termType=@Constants.NEW_YORK_BOLET_CODE"
+                               class="@(Model.termType == Constants.NEW_YORK_BOLET_CODE ? "active-tab" : "")">
+                                <img style="height: 30px;" src="~/img/logo-deebef36ed9bb3f8e07e8492eecbb7ae (1) 1.png" />
+                                NEW YORK
+                            </a>
+                        </label>
+                    </div>
+
+                    <div class="col-4 tab-style">
+                        <input type="radio" id="tab-2" name="tab-group-1" @(Model.termType == Constants.FLORIDA_BOLET_CODE ? "checked" : "")>
+                        <label for="tab-2">
+                            <a style="font-size: 11px;" href="@ViewBag.MyConfig.MyValue/BuyTicket?termType=@Constants.FLORIDA_BOLET_CODE"
+                               class="@(Model.termType == Constants.FLORIDA_BOLET_CODE ? "active-tab" : "")">
+                                <img style="height: 30px;" src="~/img/siteLogo 2.png" />
+                                FLORIDA
+                            </a>
+                        </label>
+                    </div>
+
+                    <div class="col-4 tab-style">
+                        <input type="radio" id="tab-2" name="tab-group-1" @(Model.termType == Constants.BOULCHANS_CODE ? "checked" : "")>
+                        <label for="tab-2">
+                            <a style="font-size: 11px;" href="@ViewBag.MyConfig.MyValue/BuyTicket?termType=@Constants.BOULCHANS_CODE"
+                               class="@(Model.termType == Constants.BOULCHANS_CODE ? "active-tab" : "")">
+                                @*<img style="height: 30px;" src="~/img/siteLogo 2.png" />*@
+                                BOULCHANS
+                            </a>
+                        </label>
+                    </div>
+                </div>
+
+
+                <div id="last-term-result-data" style="margin-bottom:20px;">
+                </div>
+                <script>
+                    var countPage = 1;
+                    getLastTermResultData(@Model.termType, countPage);
+                    $(window).scroll(function() {
+                        if ($(window).scrollTop() == $(document).height() - $(window).height()) {
+                            // ajax call get data from server and append to the div
+                            countPage += 1;
+                            console.log("next " + countPage);
+                            getLastTermResultData(@Model.termType, countPage);
+                        }
+                    });
+                </script>
+            </section>
+        </div>
+    </div>
+</div>
+
+<script>
+    stopLoading();
+</script>
+
+

+ 62 - 0
website/Views/BuyTicket/LastTermResult.cshtml

@@ -0,0 +1,62 @@
+@*
+    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
+*@
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Common;
+@using LotteryWebApp.Service;
+@model LastTermResult_ViewModel
+
+<div>
+    @{
+        List<Term> all = new List<Term>();
+
+        List<Term> d3 = new List<Term>();
+        List<Term> d4 = new List<Term>();
+        List<Term> d5 = new List<Term>();
+        for (int i = 0; i < (Model.listTerm.Count > 2 ? 2 : Model.listTerm.Count); i++)
+        {
+            d3.Add(Model.listTerm[i]);
+            d4.Add(Model.listTerm[i]);
+            d5.Add(Model.listTerm[i]);
+        }
+        if (Model.termType == Constants.BOULCHANS_CODE)
+        {
+            if (Model.listTermNotDrawn != null && Model.listTermNotDrawn.Count > 0)
+            {
+                Term termNotDrawn = Model.listTermNotDrawn.Find(x => x.status == "1");
+                Term termWaitingDrawn = Model.listTermNotDrawn.Find(x => x.status == "2");
+
+                if (termNotDrawn != null)
+                {
+                    all.Add(termNotDrawn);
+                }
+                if (termWaitingDrawn != null)
+                {
+                    all.Add(termWaitingDrawn);
+                }
+            }
+            all.AddRange(Model.listTerm);
+
+            for (int i = 0; i < all.Count; i++)
+            {
+                List<Term> d6 = new List<Term>();
+                d6.Add(all[i]);
+                @await Component.InvokeAsync("TicketForm", new {data= d6, type = Constants.BOULCHANS_CODE,})
+            }
+        }
+        else if (Model.termType == Constants.NEW_YORK_BOLET_CODE)
+        {
+            @await Component.InvokeAsync("TicketForm", new {data= d3, type = Constants.NEW_YORK_BOLET_CODE,})
+            @await Component.InvokeAsync("TicketForm", new {data= d4, type = Constants.NEW_YORK_MAYRAJ_CODE,})
+            @await Component.InvokeAsync("TicketForm", new {data= d5, type = Constants.NEW_YORK_LOTTO3_CODE,})
+        }
+        else
+        {
+            @await Component.InvokeAsync("TicketForm", new {data= d3, type = Constants.FLORIDA_BOLET_CODE,})
+            @await Component.InvokeAsync("TicketForm", new {data= d4, type = Constants.FLORIDA_MAYRAJ_CODE,})
+            @await Component.InvokeAsync("TicketForm", new {data= d5, type = Constants.FLORIDA_LOTTO3_CODE,})
+        }
+    }
+</div>

+ 292 - 0
website/Views/BuyTicket/Payment.cshtml

@@ -0,0 +1,292 @@
+@{
+    ViewData["Title"] = "ChooseNumber";
+    Layout = "~/Views/Shared/_NothingLayout.cshtml";
+}
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Common;
+
+@model BuyTicketPayment_ViewModel
+
+
+<div class="app-content content" style="position:relative">
+    <div class="card-title text-center ">
+        <div class="news-button-header-container" style="text-align: start; margin: 0 10px;">
+            @await Component.InvokeAsync("SmallHeader", new { title = @Lang.review_payment.ToUpper(), url ="BuyTicket"})
+        </div>
+    </div>
+
+    <div class="content-wrapper" style="margin-top:80px; margin-bottom:60px;">
+        <div class="content-body">
+            <section class="flexbox-container">
+                <div class="col-12 align-items-center justify-content-center">
+
+                    @{
+                        if (Model.step == Constants.PAYMENT_SHOW)
+                        {
+                            <input type="hidden" value="1" id="payment-status" />
+                            <div class="header-choose-container">
+                                <div class="row">
+                                    <div class="col-6 date-choose-box text-style-start-2">
+                                        <h6>@Lang.your_number</h6>
+                                    </div>
+                                    <div class="col-6 button-choose-box text-style-end-2">
+                                        <h6>@Lang.money (HTG)</h6>
+                                    </div>
+                                </div>
+                            </div>
+
+
+                            <div>
+                                @{
+                                    string[] ticketNumber = Model.tickets.Split(",");
+                                    for (int i = 0; i < ticketNumber.Length; i++)
+                                    {
+                                        <div>
+                                            @await Component.InvokeAsync("PaymentForm", new {data= ticketNumber[i], ticketType=Model.ticketType})
+                                        </div>
+                                    }
+                                }
+                            </div>
+
+
+                            <hr class="line2" />
+
+                            <div style="margin:30px 0;">
+                                <div class="row">
+                                    <div class="col-6 text-style-start-2">
+                                        <h6>@Lang.term</h6>
+                                    </div>
+                                    <div class="col-6 date-choose-box">
+                                        <div class="date-choose-confirm">
+                                            <h5 class="text-bold-700">@DateTime.Now.ToString("dd/MM/yyyy")</h5>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+
+                            <hr class="line2" />
+
+                            <div style="margin:30px 0;">
+                                <div class="row">
+                                    <div class="col-6 text-style-start-2">
+                                        <h6>@Lang.total_ticket</h6>
+                                    </div>
+                                    <div class="col-6 text-style-end-2">
+                                        <h5 class="text-bold-700">@Model.tickets.Split(",").Length</h5>
+                                    </div>
+                                </div>
+
+                                <hr class="line2" />
+
+                                <div class="row">
+                                    <div class="col-6 text-style-start-3">
+                                        <h6>@Lang.total_money: </h6>
+                                    </div>
+                                    <div class="col-6 text-style-end-3">
+                                        <h5 id="total-money" class="text-bold-700">@(Model.tickets.Split(",").Length * 10) HTG</h5>
+                                    </div>
+                                </div>
+                            </div>
+
+                            <div class="row button-on-footer" style="margin-top:50px;">
+                                <div class="col-6">
+                                    <button type="button" class="btn btn-outline-primary btn-block button-style-2"
+                                        onclick="reorderButton_Click()">
+                                        <i class="ft-unlock"></i> @Lang.reorder.ToUpper()
+                                    </button>
+                                </div>
+                                <div class="col-6">
+                                    <button type="button" class="btn btn-outline-primary btn-block login-button payment-button"
+                                        onclick="paymentSendOTPButton_Click('@Lang.enter_amount_1_1000')">
+                                        <i class="ft-unlock"></i> @Lang.payment.ToUpper()
+                                    </button>
+                                </div>
+                            </div>
+
+                        }
+                        else if (Model.step == Constants.PAYMENT_RESULT)
+                        {
+                            <div class="card-header border-0 card-box">
+                                <div class="card-title text-center ">
+                                    <div>
+                                        <div style="    margin-top: 50px;">
+                                            <img class="logo-app" src="~/img/Group854.png" />
+                                        </div>
+
+                                        <div style="position: relative; margin-top: 10px;">
+                                            <h2 class="text-style-main-large">
+                                                @Lang.success
+                                            </h2>
+                                        </div>
+
+                                        <div style="position: relative; margin-top: 10px;">
+                                            <h4 class="text-style-blue-normal">
+                                                @Lang.brought_success
+                                            </h4>
+                                        </div>
+
+
+                                        <div style="    margin-top: 30px;">
+                                            <div class="row text-box-row">
+                                                <div class="col-6 text-start">
+                                                    <h6>@Lang.number</h6>
+                                                </div>
+                                                <div class="col-6 text-end-bold">
+                                                    @Model.profile.users
+                                                </div>
+                                            </div>
+                                            <hr class="line-2" style="margin: 0px 15px 20px 15px; top:0px;">
+
+                                            <div class="row text-box-row">
+                                                <div class="col-6 text-start">
+                                                    <h6>@Lang.ticket_code</h6>
+                                                </div>
+                                                <div class="col-6 text-end-bold">
+                                                    @Model.confirmBuyingTicketResponse.listTiketId
+                                                </div>
+                                            </div>
+                                            <hr class="line-2" style="margin: 0px 15px 20px 15px; top:0px;">
+
+                                            <div class="row text-box-row">
+                                                <div class="col-6 text-start">
+                                                    <h6>@Lang.order_code</h6>
+                                                </div>
+                                                <div class="col-6 text-end-bold">
+                                                    #@Model.confirmBuyingTicketResponse.orderId
+                                                </div>
+                                            </div>
+                                            <hr class="line-2" style="margin: 0px 15px 20px 15px; top:0px;">
+
+
+                                            <div class="row text-box-row">
+                                                <div class="col-6 text-start">
+                                                    <h6>@Lang.payment</h6>
+                                                </div>
+                                                <div class="col-6 text-end-bold">
+                                                    @string.Format("{0:#,0}", double.Parse(Model.confirmTicketDataResponse.totalMoney)) HTG
+                                                </div>
+                                            </div>
+
+                                            <hr class="line-2" style="margin: 0px 15px 20px 15px; top:0px;">
+                                            <div class="row text-box-row">
+                                                <div class="col-6 text-start">
+                                                    <h6>@Lang.content</h6>
+                                                </div>
+
+                                                @{
+                                                    string content = Lang.buy;
+                                                    if (Model.ticketType == Constants.BOLET_CODE)
+                                                    {
+                                                        content += " Bolet of ";
+                                                    }
+                                                    else if (Model.ticketType == Constants.MAYRAJ_CODE)
+                                                    {
+                                                        content += " Mayraj of ";
+                                                    }
+                                                    else if (Model.ticketType == Constants.BOULCHANS_CODE)
+                                                    {
+                                                        content += " Boulchans of ";
+                                                    }
+                                                    else
+                                                    {
+                                                        content += " Lotto3 of ";
+                                                    }
+
+                                                    if (Model.termType == Constants.NEW_YORK_BOLET_CODE || Model.termType == Constants.NEW_YORK_MAYRAJ_CODE || Model.termType == Constants.NEW_YORK_LOTTO3_CODE)
+                                                    {
+                                                        content += " - New York ";
+                                                    }
+                                                    else if (Model.ticketType == Constants.BOULCHANS_CODE)
+                                                    {
+                                                        content += " Natcom Loto ";
+                                                    }
+                                                    else
+                                                    {
+                                                        content += " - Florida ";
+                                                    }
+                                                    content += Model.confirmTicketDataResponse.termObj.endDate;
+
+                                                    <div class="col-6 text-end-bold">
+                                                        @content
+                                                    </div>
+                                                }
+                                            </div>
+                                            <hr class="line-2" style="margin: 0px 15px 20px 15px; top:0px;">
+
+                                        </div>
+                                    </div>
+
+                                    <div class="row button-on-footer" style="margin-top:50px;">
+                                        <div class="col-12">
+                                            <form class="form-horizontal" action="@ViewBag.MyConfig.MyValue/Home" method="get">
+                                                <button type="submit" class="btn btn-outline-primary btn-block login-button">
+                                                    <i class="ft-unlock"></i> @Lang.return_home_page
+                                                </button>
+                                            </form>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        }
+                    }
+                </div>
+            </section>
+        </div>
+    </div>
+</div>
+
+<script>
+    stopLoading();
+</script>
+
+
+<script>
+    var moneyEach = 1;
+
+    $(".ticket-money").on("change", function(event) {
+
+        console.log("change money");
+        let totalMoney = 0;
+        let check = 1;
+        var elements = document.getElementsByClassName("ticket-money");
+        for (let i = 0; i < elements.length; i++) {
+            let val = elements[i].value;
+            console.log("val: " + val);
+            if (val == "" || val == null || val == undefined || val == "0") {
+                check *= 0;
+            } else {
+                totalMoney += parseInt(elements[i].value);
+            }
+        }
+        console.log("totalMoney: " + totalMoney + " check: " + check);
+
+        var selectElement = event.target;
+        if (totalMoney > 5000 || check == 0) {
+            $("#payment-status").val("0");
+            let old = $(this).attr("oldvalue");
+
+            $(".payment-button").addClass("inactive");
+            //selectElement.value = old;
+
+            if (check == 0) {
+                //console.log("money error: " + old);
+                //toastr.error("Your money must be in range from 1 to 1000 HTG. Please check again.");
+            } else {
+                //console.log("money each over: " + old);
+                toastr.error('@Lang.over_1000HTG_transfer');
+            }
+        } else {
+            $(".payment-button").removeClass("inactive");
+            $("#payment-status").val("1");
+
+            moneyEach = selectElement.value;
+
+            $(this).attr("oldvalue").value = moneyEach;
+
+            console.log("money each: " + moneyEach);
+            $("#total-money").text(totalMoney + " HTG");
+        }
+    })
+</script>

+ 119 - 0
website/Views/History/Index.cshtml

@@ -0,0 +1,119 @@
+@{
+    ViewData["Title"] = "Index";
+    Layout = "~/Views/Shared/_Layout.cshtml";
+}
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Common;
+
+@model History_ViewModel
+
+
+<div class="app-content content" style="position:relative">
+
+    <div class="card-title text-center ">
+        <div class="news-button-header-container" style="text-align: start; margin: 0 10px;">
+            @await Component.InvokeAsync("SmallHeader", new { title = Lang.history.ToUpper()})
+        </div>
+    </div>
+
+
+
+
+    <div class="content-wrapper buy-ticket-container" style="margin-top:50px;">
+        <div class="content-body">
+            <section class="flexbox-container">
+
+                <div class="wrapper-style-3">
+                    <div class="row tabs-style-3">
+                        <div class="col-4 tab-style-3" style="padding:0px;    text-align: center;">
+                            <input type="radio" name="css-tabs" id="tab-style-3-1" class="tab-switch-style-3" @(Model.winType == Constants.NOT_DRAW_CODE ? "checked" : "")>
+                            <label for="tab-style-3-1" class="tab-label-style-3" onclick="actionButton_Click('/History?gameId=@Model.gameId&winType=@Constants.NOT_DRAW_CODE')">
+                                <a class="@(Model.gameId == Constants.NEW_YORK_BOLET_CODE ? "active-tab" : "")">
+                                    @Lang.not_draw
+                                </a>
+                            </label>
+                        </div>
+
+                        <div class="col-4 tab-style-3" style="padding:0px;    text-align: center;">
+                            <input type="radio" name="css-tabs" id="tab-style-3-2" class="tab-switch-style-3" @(Model.winType == Constants.WIN_CODE ? "checked" : "")>
+                            <label for="tab-style-3-2" class="tab-label-style-3" onclick="actionButton_Click('/History?gameId =@Model.gameId&winType=@Constants.WIN_CODE')">
+                                <a class="@(Model.gameId == Constants.NEW_YORK_MAYRAJ_CODE ? "active-tab" : "")">@Lang.win</a>
+                            </label>
+                        </div>
+                        <div class="col-4 tab-style-3" style="padding:0px;    text-align: center;">
+                            <input type="radio" name="css-tabs" id="tab-style-3-3" class="tab-switch-style-3" @(Model.winType == Constants.DRAWN_CODE ? "checked" : "")>
+                            <label for="tab-style-3-3" class="tab-label-style-3" onclick="actionButton_Click('/History?gameId =@Model.gameId&winType=@Constants.DRAWN_CODE')">
+                                <a class="@(Model.gameId == Constants.NEW_YORK_LOTTO3_CODE ? "active-tab" : "")">@Lang.not_win</a>
+                            </label>
+                        </div>
+
+                    </div>
+                </div>
+
+                <div class="row tabs-style" style="    margin-top: 30px !important;">
+
+                    <div class="col-3 tab-style">
+                        <input type="radio" id="tab-1" name="tab-group-1" @(Model.gameId == Constants.NEW_YORK_BOLET_CODE ? "checked" : "")>
+                        <label for="tab-1">
+                            <a style="font-size: 12px;" href="@ViewBag.MyConfig.MyValue/History?gameId=@Constants.NEW_YORK_BOLET_CODE&winType=@Model.winType"
+                               class="@(Model.gameId == Constants.NEW_YORK_BOLET_CODE ? "active-tab" : "")">
+                                BOLET
+                            </a>
+                        </label>
+                    </div>
+
+                    <div class="col-3 tab-style">
+                        <input type="radio" id="tab-2" name="tab-group-1" @(Model.gameId == Constants.NEW_YORK_MAYRAJ_CODE ? "checked" : "")>
+                        <label for="tab-2">
+                            <a style="font-size: 12px;" href="@ViewBag.MyConfig.MyValue/History?gameId=@Constants.NEW_YORK_MAYRAJ_CODE&winType=@Model.winType"
+                               class="@(Model.gameId == Constants.NEW_YORK_MAYRAJ_CODE ? "active-tab" : "")">
+                                MARYAJ
+                            </a>
+                        </label>
+                    </div>
+                    <div class="col-3 tab-style">
+                        <input type="radio" id="tab-2" name="tab-group-1" @(Model.gameId == Constants.NEW_YORK_LOTTO3_CODE ? "checked" : "")>
+                        <label for="tab-2">
+                            <a style="font-size: 12px;" href="@ViewBag.MyConfig.MyValue/History?gameId=@Constants.NEW_YORK_LOTTO3_CODE&winType=@Model.winType"
+                               class="@(Model.gameId == Constants.NEW_YORK_LOTTO3_CODE ? "active-tab" : "")">
+                                LOTTO3
+                            </a>
+                        </label>
+                    </div>
+
+                    <div class="col-3 tab-style">
+                        <input type="radio" id="tab-2" name="tab-group-1" @(Model.gameId == Constants.BOULCHANS_CODE ? "checked" : "")>
+                        <label for="tab-2">
+                            <a style="font-size: 12px;" href="@ViewBag.MyConfig.MyValue/History?gameId=@Constants.BOULCHANS_CODE&winType=@Model.winType"
+                               class="@(Model.gameId == Constants.BOULCHANS_CODE ? "active-tab" : "")">
+                                BOULCHANS
+                            </a>
+                        </label>
+                    </div>
+                </div>
+
+                <div id="user-ticket-data">
+                </div>
+                <script>
+                    var countPage = 1;
+                    getUserTicketData(@Model.winType, @Model.gameId, countPage);
+                    $(window).scroll(function() {
+                        if ($(window).scrollTop() == $(document).height() - $(window).height()) {
+                            // ajax call get data from server and append to the div
+                            console.log("next " + countPage);
+                            getUserTicketData(@Model.winType, @Model.gameId, countPage += 1);
+                        }
+                    });
+                </script>
+
+            </section>
+        </div>
+    </div>
+</div>
+
+<script>
+    stopLoading();
+</script>
+

+ 210 - 0
website/Views/History/TicketDetail.cshtml

@@ -0,0 +1,210 @@
+@*
+    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
+*@
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Models;
+@using LotteryWebApp.Common;
+@using LotteryWebApp.Controllers;
+@using System.Globalization;
+
+@model HistoryTicketDetail_ViewModel
+
+@{
+    string drawnDate = DateTime.ParseExact(Model.ticket.termRandomDate, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy");
+    string drawnTime = DateTime.ParseExact(Model.ticket.termRandomDate, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("HH:mm");
+
+    string endDate = DateTime.ParseExact(Model.ticket.termEndDate, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy");
+    string endTime = DateTime.ParseExact(Model.ticket.termEndDate, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("HH:mm");
+
+    string createDate = DateTime.ParseExact(Model.ticket.createDate, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy HH:mm");
+
+}
+
+<div class="modal-content">
+    <div class="modal-header">
+        <h5 class="modal-title text-bold-600">@Lang.details @Lang.ticket #@Model.ticket.id</h5>
+        <button type="button" class="close" data-dismiss="modal" aria-label="Close" style="text-align: end;">
+            <span aria-hidden="true">×</span>
+        </button>
+    </div>
+    <div class="modal-body">
+        <div class="language-container">
+            <div>
+                <div class="row">
+                    <div class="col-6">
+                        @{
+                            if (Model.type == Constants.NEW_YORK_BOLET_CODE || Model.type == Constants.FLORIDA_BOLET_CODE)
+                            {
+                                <img class="image-w-78" src="~/img/Group 83775.png" />
+                            }
+                            else if (Model.type == Constants.NEW_YORK_MAYRAJ_CODE || Model.type == Constants.FLORIDA_MAYRAJ_CODE)
+                            {
+                                <img class="image-w-71" src="~/img/MARYAJ.png" />
+                            }
+                            else if (Model.type == Constants.NEW_YORK_LOTTO3_CODE || Model.type == Constants.FLORIDA_LOTTO3_CODE)
+                            {
+                                <img class="image-w-71" src="~/img/LOTTO3.png" />
+                            }
+                            else if (Model.type == Constants.BOULCHANS_CODE)
+                            {
+                            //<img class="image-w-71" src="~/img/LOTTO3.png" />
+                                <div style="color: #DA5C5C;     font-weight: 900;">BOULCHANS</div>
+                            }
+                        }
+
+                        @*<img src="~/img/Group 83775.png" />*@
+                        <h6 class="text-margin-10">@BaseController.ConvertToWinType(Model.winType) </h6>
+                    </div>
+                    <div class="col-6">
+                        <h6 class="text-margin-10">
+                            @Lang.type: @BaseController.ConvertGameIdToTerm(Model.ticket.gameId)
+                        </h6>
+                        @{
+                            if (Model.type == Constants.BOULCHANS_CODE)
+                            {
+                                <h6 class="text-margin-10">
+                                    @Lang.draw_date: @endDate
+                                </h6>
+                            }
+                            else
+                            {
+                                <h6 class="text-margin-10">
+                                    @Lang.draw_date: @drawnDate
+                                </h6>
+                            }
+                        }
+
+                        <h6 class="text-margin-10">
+                            @Lang.draw_time: @BaseController.ConvertDrawnTimeFromTicket(Model.type, Model.ticket)
+                        </h6>
+                    </div>
+                </div>
+            </div>
+
+            <hr class="line2" />
+
+            @{
+                if (Model.winType == Constants.NOT_DRAW_CODE)
+                {
+                    <div class="">
+                        <div class="row">
+                            <div class="col-4 ticket-info  history-ticket-box">
+                                <h6>@Lang.ticket</h6>
+                                <h6 class="text-bold">#@Model.ticket.id </h6>
+                            </div>
+
+                            <div class="col-4 history-ticket-box">
+                                <h6>@Lang.your_number</h6>
+                                <div class="ball-container">
+                                    <img src="~/img/Group 83766.png" />
+                                    <div class="ball-number">
+                                        @Model.ticket.code
+                                    </div>
+                                </div>
+
+                            </div>
+                            <div class="col-4  history-ticket-box" style="margin: auto;">
+                                <h6>@Lang.price</h6>
+                                <h6 class="text-bold">@Model.ticket.money HTG</h6>
+                            </div>
+
+                        </div>
+                    </div>
+                }
+                else if (Model.winType == Constants.WIN_CODE)
+                {
+                    <div class="" style="text-align:center;">
+                        <h6>@Lang.you_have_winning_number</h6>
+                        <h4 style="color:red; font-weight:600;">@Model.ticket.moneyWin HTG</h4>
+
+                        <hr class="line2" />
+
+                        <h6>@Lang.in_draw_date</h6>
+
+                        <div class="ball-container">
+                            <img src="~/img/Group 83766.png" />
+                            <div class="ball-number">
+                                @Model.ticket.code
+                            </div>
+                        </div>
+
+                        <div>
+                            <i>@Lang.bet_amount: @Model.ticket.money HTG</i>
+                        </div>
+                    </div>
+                }
+                else
+                {
+                    <div class="">
+                        <div class="row">
+                            <div class="col-4 ticket-info  history-ticket-box">
+                                <h6>@Lang.ticket</h6>
+                                <h6 class="text-bold">#@Model.ticket.id </h6>
+                            </div>
+
+                            <div class="col-3 history-ticket-box">
+                                <h6>@Lang.your_number</h6>
+                                <div class="ball-container">
+                                    <img src="~/img/Group 83766.png" />
+                                    <div class="ball-number">
+                                        @Model.ticket.code
+                                    </div>
+                                </div>
+
+                            </div>
+                            <div class="col-3  history-ticket-box" style="margin: auto;">
+                                <h6>@Lang.price</h6>
+                                <h6 class="text-bold">@Model.ticket.money HTG</h6>
+                            </div>
+                            <div class="col-2  history-ticket-box" style="margin: auto;">
+                                <h6>@Lang.status</h6>
+                                <h6 class="text-bold">@Lang.not_win</h6>
+                            </div>
+                        </div>
+                    </div>
+                }
+            }
+
+            <hr class="line2" />
+
+            <h6 style="font-weight:600;">@Lang.detail_of_payment</h6>
+
+            <div class="row text-box-row">
+                <div class="col-6 text-start" style="    padding: 0;">
+                    <h6>@Lang.payment_account</h6>
+                </div>
+                <div class="col-6 text-end-bold" style="    padding: 0;">
+                    <h6 style="font-weight:600;">@Model.msisdn</h6>
+                </div>
+            </div>
+
+            <div class="row text-box-row">
+                <div class="col-6 text-start" style="    padding: 0;">
+                    <h6>@Lang.channel_buy</h6>
+                </div>
+                <div class="col-6 text-end-bold" style="    padding: 0;">
+                    <h6 style="font-weight:600;">@Model.ticket.channel</h6>
+                </div>
+            </div>
+
+            <div class="row text-box-row">
+                <div class="col-6 text-start" style="    padding: 0;">
+                    <h6>@Lang.payment_mothod</h6>
+                </div>
+                <div class="col-6 text-end-bold" style="    padding: 0;">
+                    <h6 style="font-weight:600;">@BaseController.ConvertWalletTicket(Model.ticket.channelPayment)</h6>
+                </div>
+            </div>
+
+            <div class="row text-box-row">
+                <div class="col-6 text-start" style="    padding: 0;">
+                    <h6>@Lang.buy_time</h6>
+                </div>
+                <div class="col-6 text-end-bold" style="    padding: 0;">
+                    <h6 style="font-weight:600;">@createDate</h6>
+                </div>
+            </div>
+
+        </div>
+    </div>
+</div>

+ 22 - 0
website/Views/History/UserTicket.cshtml

@@ -0,0 +1,22 @@
+@*
+    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
+*@
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using System.Globalization;
+@using LotteryWebApp.Common;
+@using LotteryWebApp.Service;
+
+@model HistoryUserTicket_ViewModel
+
+@{
+    for (int i = 0; i < Model.tickets.Count; i++)
+    {
+        Ticket ticket = Model.tickets[i];
+
+        <div>
+            @await Component.InvokeAsync("TicketHistory", new {data= ticket, winType=Model.winType})
+        </div>
+    }
+}

+ 253 - 0
website/Views/Home/FAQ.cshtml

@@ -0,0 +1,253 @@
+@{
+    ViewData["Title"] = "FAQ";
+    Layout = "~/Views/Shared/_Layout.cshtml";
+}
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Common;
+
+@model HomeFAQ_ViewModel
+
+<div class="app-content content" style="position:relative">
+
+    <div class="card-title text-center ">
+        <div class="news-button-header-container" style="text-align: start; margin: 0 10px;">
+            @await Component.InvokeAsync("SmallHeader", new { title = "FAQ"})
+        </div>
+    </div>
+
+    <div class="content-wrapper buy-ticket-container" style="margin-top:65px;">
+        <div class="content-body">
+            <section class="flexbox-container">
+
+                <div class="faq-container">
+                    <div class="faq-container-img">
+                        <img src="~/img/image 1.png" />
+                    </div>
+
+                    <div class="faq-container-content">
+                        <div class="row faq-question" sequence="1">
+                            <div class="col-10">
+                                <div class="faq-start-box" style="font-weight: 700;">
+                                     @Html.Raw(Question.q1)
+                                </div>
+                            </div>
+                            <div class="col-2">
+                                <div class="faq-end-box">
+                                    <i class="faq-icon-add-1 fa fa-solid fa-plus"></i>
+                                    <i class="faq-icon-minus-1 fa fa-solid fa-minus hide"></i>
+
+                                </div>
+                            </div>
+                        </div>
+                        <div class="faq-answer-1 hide">
+                            <div class="faq-start-box">
+                                @Html.Raw(Question.a1)
+                            </div>
+                        </div>
+                        <hr class="line-2" />
+
+                        <div class="row faq-question" sequence="2">
+                            <div class="col-10">
+                                <div class="faq-start-box" style="font-weight: 700;">
+                                    @Html.Raw(Question.q2)
+                                </div>
+                            </div>
+                            <div class="col-2">
+                                <div class="faq-end-box">
+                                    <i class="faq-icon-add-2 fa fa-solid fa-plus"></i>
+                                    <i class="faq-icon-minus-2 fa fa-solid fa-minus hide"></i>
+
+                                </div>
+                            </div>
+                        </div>
+                        <div class="faq-answer-2 hide">
+                            <div class="faq-start-box">
+                                @Html.Raw(Question.a2)
+                            </div>
+                        </div>
+                        <hr class="line-2" />
+
+                        <div class="row faq-question" sequence="3">
+                            <div class="col-10">
+                                <div class="faq-start-box" style="font-weight: 700;">
+                                    @Html.Raw(Question.q3)
+                                </div>
+                            </div>
+                            <div class="col-2">
+                                <div class="faq-end-box">
+                                    <i class="faq-icon-add-3 fa fa-solid fa-plus"></i>
+                                    <i class="faq-icon-minus-3 fa fa-solid fa-minus hide"></i>
+
+                                </div>
+                            </div>
+                        </div>
+                        <div class="faq-answer-3 hide">
+                            <div class="faq-start-box">
+                                @Html.Raw(Question.a3)
+                            </div>
+                        </div>
+                        <hr class="line-2" />
+
+                        <div class="row faq-question" sequence="4">
+                            <div class="col-10">
+                                <div class="faq-start-box" style="font-weight: 700;">
+                                    @Html.Raw(Question.q4)
+                                </div>
+                            </div>
+                            <div class="col-2">
+                                <div class="faq-end-box">
+                                    <i class="faq-icon-add-4 fa fa-solid fa-plus"></i>
+                                    <i class="faq-icon-minus-4 fa fa-solid fa-minus hide"></i>
+
+                                </div>
+                            </div>
+                        </div>
+                        <div class="faq-answer-4 hide">
+                            <div class="faq-start-box">
+                                @Html.Raw(Question.a4)
+                            </div>
+                        </div>
+                        <hr class="line-2" />
+
+                        <div class="row faq-question" sequence="5">
+                            <div class="col-10">
+                                <div class="faq-start-box" style="font-weight: 700;">
+                                    @Html.Raw(Question.q5)
+                                </div>
+                            </div>
+                            <div class="col-2">
+                                <div class="faq-end-box">
+                                    <i class="faq-icon-add-5 fa fa-solid fa-plus"></i>
+                                    <i class="faq-icon-minus-5 fa fa-solid fa-minus hide"></i>
+
+                                </div>
+                            </div>
+                        </div>
+                        <div class="faq-answer-5 hide">
+                            <div class="faq-start-box">
+                                @Html.Raw(Question.a5)
+                            </div>
+                        </div>
+                        <hr class="line-2" />
+
+                        <div class="row faq-question" sequence="6">
+                            <div class="col-10">
+                                <div class="faq-start-box" style="font-weight: 700;">
+                                    @Html.Raw(Question.q6)
+                                </div>
+                            </div>
+                            <div class="col-2">
+                                <div class="faq-end-box">
+                                    <i class="faq-icon-add-6 fa fa-solid fa-plus"></i>
+                                    <i class="faq-icon-minus-6 fa fa-solid fa-minus hide"></i>
+
+                                </div>
+                            </div>
+                        </div>
+                        <div class="faq-answer-6 hide">
+                            <div class="faq-start-box">
+                                @Html.Raw(Question.a6)
+                            </div>
+                        </div>
+                        <hr class="line-2" />
+
+                        <div class="row faq-question" sequence="7">
+                            <div class="col-10">
+                                <div class="faq-start-box" style="font-weight: 700;">
+                                    @Html.Raw(Question.q7)
+                                </div>
+                            </div>
+                            <div class="col-2">
+                                <div class="faq-end-box">
+                                    <i class="faq-icon-add-7 fa fa-solid fa-plus"></i>
+                                    <i class="faq-icon-minus-7 fa fa-solid fa-minus hide"></i>
+
+                                </div>
+                            </div>
+                        </div>
+                        <div class="faq-answer-7 hide">
+                            <div class="faq-start-box">
+                                @Html.Raw(Question.a7)
+                            </div>
+                        </div>
+                        <hr class="line-2" />
+
+                        <div class="row faq-question" sequence="8">
+                            <div class="col-10">
+                                <div class="faq-start-box" style="font-weight: 700;">
+                                    @Html.Raw(Question.q8)
+                                </div>
+                            </div>
+                            <div class="col-2">
+                                <div class="faq-end-box">
+                                    <i class="faq-icon-add-8 fa fa-solid fa-plus"></i>
+                                    <i class="faq-icon-minus-8 fa fa-solid fa-minus hide"></i>
+
+                                </div>
+                            </div>
+                        </div>
+                        <div class="faq-answer-8 hide">
+                            <div class="faq-start-box">
+                                @Html.Raw(Question.a8)
+                            </div>
+                        </div>
+                        <hr class="line-2" />
+
+                        <div class="row faq-question" sequence="9">
+                            <div class="col-10">
+                                <div class="faq-start-box" style="font-weight: 700;">
+                                    @Html.Raw(Question.q9)
+                                </div>
+                            </div>
+                            <div class="col-2">
+                                <div class="faq-end-box">
+                                    <i class="faq-icon-add-9 fa fa-solid fa-plus"></i>
+                                    <i class="faq-icon-minus-9 fa fa-solid fa-minus hide"></i>
+
+                                </div>
+                            </div>
+                        </div>
+                        <div class="faq-answer-9 hide">
+                            <div class="faq-start-box">
+                                @Html.Raw(Question.a9)
+                            </div>
+                        </div>
+                        <hr class="line-2" />
+
+                    </div>
+
+
+                    @*<div class="faq-end-box" style="margin-top:30px;">
+                        <div class="nav-left nav-not-active">
+                            <i class="fa fa-solid fa-arrow-left"></i>
+                        </div>
+                        <div class="nav-page">1/1</div>
+                        <div class="nav-right nav-active">
+                            <i class="fa fa-solid fa-arrow-right"></i>
+                        </div>
+                    </div>*@
+                </div>
+
+            </section>
+        </div>
+    </div>
+</div>
+
+<script>
+    $(".faq-question").on("click", function() {
+        let seq = $(this).attr("sequence");
+        if ($(this).hasClass("active")){
+            $(this).removeClass("active");
+            $(".faq-answer-" + seq).addClass("hide");
+            $(".faq-icon-add-" + seq).removeClass("hide");
+            $(".faq-icon-minus-" + seq).addClass("hide");
+        }
+        else {
+            $(this).addClass("active");
+            $(".faq-answer-" + seq).removeClass("hide");
+            $(".faq-icon-add-" + seq).addClass("hide");
+            $(".faq-icon-minus-" + seq).removeClass("hide");
+        }
+    })
+</script>

+ 125 - 0
website/Views/Home/FlashView.cshtml

@@ -0,0 +1,125 @@
+@{
+    ViewData["Title"] = "FlashView";
+    Layout = "~/Views/Shared/_NothingLayout.cshtml";
+}
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Common;
+
+<style>
+
+</style>
+
+<div class="container">
+    <!--<div class="take-input">
+       <input type="text" placeholder="Write any text" />
+      <a href="javascript:void(0);">Enter Text</a>
+    </div>-->
+    <div class="animate seven">
+        <span>W</span><span>e</span><span>l</span><span>c</span><span>o</span><span>m</span><span>e</span><br>
+        <span>B</span><span>y</span><span>e</span><span>n</span><span>v</span><span>i</span><span>n</span><span>i</span>
+        @*<a class="repeat" href="javascript:void(0);">Repeat Animation</a>*@
+    </div>
+
+    @*    <div class="animate one">
+        <span>c</span><span>s</span><span>s</span><span>3</span> &nbsp;
+        <span>a</span><span>n</span><span>i</span><span>m</span><span>a</span><span>t</span><span>i</span><span>o</span><span>n</span><span>s</span>
+
+        <a class="repeat" href="javascript:void(0);">Repeat Animation</a>
+        </div>
+
+        <div class="animate two">
+        <span>c</span><span>s</span><span>s</span><span>3</span> &nbsp;
+        <span>a</span><span>n</span><span>i</span><span>m</span><span>a</span><span>t</span><span>i</span><span>o</span><span>n</span><span>s</span>
+
+        <a class="repeat" href="javascript:void(0);">Repeat Animation</a>
+        </div>
+
+        <div class="animate three">
+        <span>c</span><span>s</span><span>s</span><span>3</span> &nbsp;
+        <span>a</span><span>n</span><span>i</span><span>m</span><span>a</span><span>t</span><span>i</span><span>o</span><span>n</span><span>s</span>
+
+        <a class="repeat" href="javascript:void(0);">Repeat Animation</a>
+        </div>
+
+        <div class="animate four">
+        <span>c</span><span>s</span><span>s</span><span>3</span> &nbsp;
+        <span>a</span><span>n</span><span>i</span><span>m</span><span>a</span><span>t</span><span>i</span><span>o</span><span>n</span><span>s</span>
+
+        <a class="repeat" href="javascript:void(0);">Repeat Animation</a>
+        </div>
+
+        <div class="animate five">
+        <span>c</span><span>s</span><span>s</span><span>3</span> &nbsp;
+        <span>a</span><span>n</span><span>i</span><span>m</span><span>a</span><span>t</span><span>i</span><span>o</span><span>n</span><span>s</span>
+
+        <a class="repeat" href="javascript:void(0);">Repeat Animation</a>
+        </div>
+
+        <div class="animate six">
+        <span>c</span><span>s</span><span>s</span><span>3</span> &nbsp;
+        <span>a</span><span>n</span><span>i</span><span>m</span><span>a</span><span>t</span><span>i</span><span>o</span><span>n</span><span>s</span>
+
+        <a class="repeat" href="javascript:void(0);">Repeat Animation</a>
+        </div>*@
+</div>
+
+
+<div style="position:relative;">
+
+    @*    <div class="flash-1 logo-1 flash-header-img-ellipse-2">
+        <img src="~/img/Ellipse 65.png" />
+        </div>
+
+        <div class="flash-2 logo-1 flash-header-img-ellipse-3">
+        <img src="~/img/Ellipse 66.png" style="    width: 100%;"/>
+        </div>
+
+        <div class="flash-3 logo-1 flash-header-img-ellipse-1">
+        <img src="~/img/Ellipse 64.png" />
+        </div>*@
+
+
+
+    <div class="flash-header-img-ellipse-4">
+        <img src="~/img/Forgot Password_ (1).png" />
+    </div>
+
+    <div class="flash-logo">
+        <img src="~/img/Logo_500.png" style="height: 480px;" />
+    </div>
+
+    @*    <div class="flash-slogan">
+        <img src="~/img/Your dream, Our mission.png" />
+        </div>*@
+
+</div>
+
+@*<div class="ocean">
+    <div class="wave"></div>
+    <div class="wave"></div>
+    </div>*@
+
+<script>
+    var delayInMilliseconds = 2000; //1 second
+    let subDomain = $("#subDomain").val();
+
+    setTimeout(function() {
+        //your code to be executed after 5 second
+        window.location.href = subDomain + '/Account/Login';
+    }, delayInMilliseconds);
+
+    /* This code is not required for the animation. This is only needed for the repeatation */
+
+    $(function(){
+      $('.repeat').click(function(){
+          var classes =  $(this).parent().attr('class');
+            $(this).parent().attr('class', 'animate');
+            var indicator = $(this);
+            setTimeout(function(){
+              $(indicator).parent().addClass(classes);
+            }, 20);
+        });
+    });
+</script>

+ 134 - 0
website/Views/Home/Index.cshtml

@@ -0,0 +1,134 @@
+@{
+    ViewData["Title"] = "Home Page";
+}
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Common;
+
+@model HomeIndex_ViewModel
+
+
+@*@{
+    if (Model.uuid != null)
+    {
+    // nhan dien thue bao
+    <script>
+    console.log("nhan dien thue bao");
+    var formData = new FormData();
+    formData.append('uuid', '@Model.uuid');
+
+    let url = '@Constants.URL_GET_MSISDN';
+    startLoading();
+    $.ajax({
+    type: "POST",
+    url: url,
+    processData: false,
+    contentType: false,
+    datatype: "jsonp",
+    data: formData,
+    success: function (data) {
+    console.log("res: " + data);
+    if (data.code == "200") {
+    let errorCode = data.errorCode;
+    if (errorCode == "200") {
+    msisdnAuto = data.data.msisdn;
+    console.log("msisdnAuto: " + msisdnAuto);
+    window.location.href = '@Model.subDomain' + "/Home?phoneNumber=" + msisdnAuto;
+    }
+    }
+    stopLoading();
+    },
+    failure: function (data) {
+    console.log("failure: " + data.responseText);
+    window.location.href = '@Model.subDomain' + "/Account/Login";
+    stopLoading();
+    },
+    error: function (data) {
+    console.log("error: " + data.responseText);
+    window.location.href = '@Model.subDomain' + "/Account/Login";
+    stopLoading();
+    }
+    });
+    console.log("nhan dien thue bao done");
+    </script>
+    }
+    else
+    {*@
+
+
+<div class="app-content content">
+    <div class="">
+        <div class="content-body">
+            <section class="flexbox-container">
+                <div class="align-items-center justify-content-center">
+
+                    <div>
+                        @await Component.InvokeAsync("HeaderHome", new {profile=Model.profile, userStatus = Model.userStatus })
+                    </div>
+
+                    <div class="row tabs-style" style="    margin-top: 30px;">
+
+                        <div class="col-4 tab-style">
+                            <input type="radio" id="tab-1" name="tab-group-1" @(Model.termType == Constants.NEW_YORK_BOLET_CODE ? "checked" : "")>
+                            <label for="tab-1">
+                                <a style="font-size: 12px;" href="@ViewBag.MyConfig.MyValue/Home?termType=@Constants.NEW_YORK_BOLET_CODE"
+                                   class="@(Model.termType == Constants.NEW_YORK_BOLET_CODE ? "active-tab" : "")">
+                                    <img style="height: 30px;" src="~/img/logo-deebef36ed9bb3f8e07e8492eecbb7ae (1) 1.png" />
+                                    NEW YORK
+                                </a>
+                            </label>
+                        </div>
+
+                        <div class="col-4 tab-style">
+                            <input type="radio" id="tab-2" name="tab-group-1" @(Model.termType == Constants.FLORIDA_BOLET_CODE ? "checked" : "")>
+                            <label for="tab-2">
+                                <a style="font-size: 12px;" href="@ViewBag.MyConfig.MyValue/Home?termType=@Constants.FLORIDA_BOLET_CODE"
+                                   class="@(Model.termType == Constants.FLORIDA_BOLET_CODE ? "active-tab" : "")">
+                                    <img style="height: 30px;" src="~/img/siteLogo 2.png" />
+                                    FLORIDA
+                                </a>
+                            </label>
+                        </div>
+
+                        <div class="col-4 tab-style">
+                            <input type="radio" id="tab-2" name="tab-group-1" @(Model.termType == Constants.BOULCHANS_CODE ? "checked" : "")>
+                            <label for="tab-2">
+                                <a style="font-size: 12px;" href="@ViewBag.MyConfig.MyValue/Home?termType=@Constants.BOULCHANS_CODE"
+                                   class="@(Model.termType == Constants.BOULCHANS_CODE ? "active-tab" : "")">
+                                    @*<img style="height: 30px;" src="~/img/siteLogo 2.png" />*@
+                                    BOULCHANS
+                                </a>
+                            </label>
+                        </div>
+                    </div>
+
+                    <hr class="line2" style="border-top: 15px solid rgba(0,0,0,.1);" />
+
+                    @*see more*@
+                    <div class="button-end">
+                        <a class="text-main-color" href="@ViewBag.MyConfig.MyValue/BuyTicket?termType=@Model.termType">@Lang.see_more</a> <i class="fas fa-solid fa-angle-right"></i>
+                    </div>
+
+
+                    <div id="term-result-data">
+                    </div>
+                    <script>
+                        getResultTermData(@Model.termType);
+                    </script>
+                </div>
+            </section>
+        </div>
+    </div>
+</div>
+@*}*@
+@*}*@
+
+
+<div>
+    @await Component.InvokeAsync("AdvertiseArea", new { listTerm = Model.listTerm})
+</div>
+
+<script>
+    stopLoading();
+</script>

+ 6 - 0
website/Views/Home/Privacy.cshtml

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

+ 120 - 0
website/Views/Home/Results.cshtml

@@ -0,0 +1,120 @@
+@{
+    ViewData["Title"] = "Results";
+    Layout = "~/Views/Shared/_Layout.cshtml";
+}
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Common;
+@using System.Globalization;
+
+@model HomeResults_ViewModel
+
+@{
+    DateTime oDateFrom = DateTime.ParseExact(Model.fromDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
+    String dateFrom = oDateFrom.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);
+
+    DateTime oDateTo = DateTime.ParseExact(Model.toDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
+    String dateTo = oDateTo.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);
+}
+
+<div class="app-content content" style="position:relative">
+    <div class="card-title text-center ">
+        <div class="news-button-header-container" style="text-align: start; margin: 0 10px;">
+            @await Component.InvokeAsync("SmallHeader", new { title = @Lang.results.ToUpper()})
+        </div>
+    </div>
+
+    <div class="content-wrapper" style="padding:2px;">
+        <div class="content-body">
+            <section class="flexbox-container">
+                <div class="content-wrapper buy-ticket-container" style="margin-top:35px;">
+                    <div class="">
+                        <div class="result-date-box">
+                            <fieldset class="form-group position-relative has-icon-left">
+                                <label>@Lang.from</label>
+                                <input type="date" class="form-control small-input-box" id="fromDate" name="fromDate" required value="@dateFrom">
+
+                            </fieldset>
+                        </div>
+                        <div class=" result-date-box">
+                            <fieldset class="form-group position-relative has-icon-left">
+                                <label>@Lang.to</label>
+                                <input type="date" class="form-control small-input-box" id="toDate" name="toDate" required value="@dateTo">
+                            </fieldset>
+                        </div>
+                        <div class=" result-date-box-button">
+                            <button type="button" class="btn btn-outline-primary adv-button btn-block login-button-action small-input-box"
+                                    onclick="getResultTermHistoryData(@Model.termType)">
+                                @Lang.search.ToUpper()
+                            </button>
+                        </div>
+                    </div>
+
+                    <div class="row tabs-style" style="    margin-top: 30px !important;">
+
+                        <div class="col-4 tab-style">
+                            <input type="radio" id="tab-1" name="tab-group-1" @(Model.termType == Constants.NEW_YORK_BOLET_CODE ? "checked" : "")>
+                            <label for="tab-1">
+                                <a style="font-size: 11px;" href="@ViewBag.MyConfig.MyValue/Home/Results?termType=@Constants.NEW_YORK_BOLET_CODE"
+                                   class="@(Model.termType == Constants.NEW_YORK_BOLET_CODE ? "active-tab" : "")">
+                                    <img style="height: 30px;" src="~/img/logo-deebef36ed9bb3f8e07e8492eecbb7ae (1) 1.png" />
+                                    NEW YORK
+                                </a>
+                            </label>
+                        </div>
+
+                        <div class="col-4 tab-style">
+                            <input type="radio" id="tab-2" name="tab-group-1" @(Model.termType == Constants.FLORIDA_BOLET_CODE ? "checked" : "")>
+                            <label for="tab-2">
+                                <a style="font-size: 11px;" href="@ViewBag.MyConfig.MyValue/Home/Results?termType=@Constants.FLORIDA_BOLET_CODE"
+                                   class="@(Model.termType == Constants.FLORIDA_BOLET_CODE ? "active-tab" : "")">
+                                    <img style="height: 30px;" src="~/img/siteLogo 2.png" />
+                                    FLORIDA
+                                </a>
+                            </label>
+                        </div>
+
+                        <div class="col-4 tab-style">
+                            <input type="radio" id="tab-2" name="tab-group-1" @(Model.termType == Constants.BOULCHANS_CODE ? "checked" : "")>
+                            <label for="tab-2">
+                                <a style="font-size: 11px;" href="@ViewBag.MyConfig.MyValue/Home/Results?termType=@Constants.BOULCHANS_CODE"
+                                   class="@(Model.termType == Constants.BOULCHANS_CODE ? "active-tab" : "")">
+                                    @*<img style="height: 30px;" src="~/img/siteLogo 2.png" />*@
+                                    BOULCHANS
+                                </a>
+                            </label>
+                        </div>
+
+                    </div>
+
+                    <div class="result-form-all">
+                        <div class="result-form-container">
+                            <div class="row result-form-box">
+                                <div class="col-3" style="border-right:1px solid white;">
+                                    <h5>@Lang.time</h5>
+                                </div>
+                                <div class="col-9">
+                                    <h5>@Lang.results</h5>
+                                </div>
+                            </div>
+                        </div>
+
+                        <div id="term-result-history-data">
+                        </div>
+                        <script>
+                            getResultTermHistoryData(@Model.termType);
+                        </script>
+                    </div>
+
+
+                </div>
+            </section>
+        </div>
+    </div>
+</div>
+
+<script>
+    stopLoading();
+</script>
+

+ 221 - 0
website/Views/Home/Rules.cshtml

@@ -0,0 +1,221 @@
+@{
+    ViewData["Title"] = "Rules";
+    Layout = "~/Views/Shared/_Layout.cshtml";
+}
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Common;
+
+@model HomeRules_ViewModel
+
+<div class="app-content content" style="position:relative">
+
+    <div class="card-title text-center ">
+        <div class="news-button-header-container" style="text-align: start; margin: 0 10px;">
+            @await Component.InvokeAsync("SmallHeader", new { title = Lang.rules.ToUpper()})
+        </div>
+    </div>
+
+    <div class="content-wrapper buy-ticket-container" style="margin-top:65px;">
+        <div class="content-body">
+            <section class="flexbox-container">
+
+                <div>
+
+                    <div class="row tabs-style" style="    margin-top: 30px;">
+                        <div class="col-4 tab-style">
+                            <input type="radio" id="tab-1" name="tab-group-1" @(Model.termType == Constants.NEW_YORK_BOLET_CODE ? "checked" : "")>
+                            <label for="tab-1">
+                                <a style="font-size: 11px;" href="@ViewBag.MyConfig.MyValue/Home/Rules?termType=@Constants.NEW_YORK_BOLET_CODE"
+                                   class="@(Model.termType == Constants.NEW_YORK_BOLET_CODE ? "active-tab" : "")">
+                                    <img style="height: 30px;" src="~/img/logo-deebef36ed9bb3f8e07e8492eecbb7ae (1) 1.png" />
+                                    NEW YORK
+                                </a>
+                            </label>
+                        </div>
+
+                        <div class="col-4 tab-style">
+                            <input type="radio" id="tab-2" name="tab-group-1" @(Model.termType == Constants.FLORIDA_BOLET_CODE ? "checked" : "")>
+                            <label for="tab-2">
+                                <a style="font-size: 11px;" href="@ViewBag.MyConfig.MyValue/Home/Rules?termType=@Constants.FLORIDA_BOLET_CODE"
+                                   class="@(Model.termType == Constants.FLORIDA_BOLET_CODE ? "active-tab" : "")">
+                                    <img style="height: 30px;" src="~/img/siteLogo 2.png" />
+                                    FLORIDA
+                                </a>
+                            </label>
+                        </div>
+
+                        <div class="col-4 tab-style">
+                            <input type="radio" id="tab-2" name="tab-group-1" @(Model.termType == Constants.BOULCHANS_CODE ? "checked" : "")>
+                            <label for="tab-2">
+                                <a style="font-size: 11px;" href="@ViewBag.MyConfig.MyValue/Home/Rules?termType=@Constants.BOULCHANS_CODE"
+                                   class="@(Model.termType == Constants.BOULCHANS_CODE ? "active-tab" : "")">
+                                    @*<img style="height: 30px;" src="~/img/siteLogo 2.png" />*@
+                                    BOULCHANS
+                                </a>
+                            </label>
+                        </div>
+                    </div>
+
+                    @{
+                        if (Model.termType == Constants.BOULCHANS_CODE)
+                        {
+                            <div class="rule-info-container button-box-animation-v1 rule-info-1">
+                                <div style="color: #DA5C5C;     font-weight: 900;">BOULCHANS</div>
+                                <div class="content-box rule-content-1">
+                                    @Html.Raw(Question.h7)
+                                </div>
+
+                                <hr class="line2" style="    margin-top: 25px;" />
+                            </div>
+                        }
+                        else if (Model.termType == Constants.NEW_YORK_BOLET_CODE)
+                        {
+                            <div class="rule-info-container button-box-animation-v1 rule-info-1" onclick="ruleDetailButton_Click(1)">
+                                <div>
+                                    <img src="~/img/Group 83909.png" />
+                                </div>
+                                <div class="arrow arrow-1">
+                                    <span></span>
+                                    <span></span>
+                                    <span></span>
+                                </div>
+
+                                <div class="content-box rule-content-1 hide">
+                                    @Html.Raw(Question.h1)
+                                </div>
+
+                                <hr class="line2" style="    margin-top: 25px;" />
+                            </div>
+
+                            <div class="rule-info-container button-box-animation-v1 rule-info-2" onclick="ruleDetailButton_Click(2)">
+                                <div>
+                                    <img src="~/img/MARYAJ.png" />
+                                </div>
+                                <div class="arrow arrow-2">
+                                    <span></span>
+                                    <span></span>
+                                    <span></span>
+                                </div>
+
+                                <div class="content-box rule-content-2 hide">
+                                    @Html.Raw(Question.h2)
+
+                                </div>
+
+                                <hr class="line2" style="    margin-top: 25px;" />
+                            </div>
+
+                            <div class="rule-info-container button-box-animation-v1 rule-info-3" onclick="ruleDetailButton_Click(3)">
+                                <div>
+                                    <img src="~/img/LOTTO3.png" />
+                                </div>
+                                <div class="arrow arrow-3">
+                                    <span></span>
+                                    <span></span>
+                                    <span></span>
+                                </div>
+                                <div class="content-box rule-content-3 hide">
+                                    @Html.Raw(Question.h3)
+                                </div>
+                                <hr class="line2" style="    margin-top: 25px;" />
+                            </div>
+                        }
+                        else
+                        {
+                            <div class="rule-info-container button-box-animation-v1 rule-info-1" onclick="ruleDetailButton_Click(1)">
+                                <div>
+                                    <img src="~/img/Group 83909.png" />
+                                </div>
+                                <div class="arrow arrow-1">
+                                    <span></span>
+                                    <span></span>
+                                    <span></span>
+                                </div>
+
+                                <div class="content-box rule-content-1 hide">
+                                    @Html.Raw(Question.h4)
+                                </div>
+
+                                <hr class="line2" style="    margin-top: 25px;" />
+                            </div>
+
+                            <div class="rule-info-container button-box-animation-v1 rule-info-2" onclick="ruleDetailButton_Click(2)">
+                                <div>
+                                    <img src="~/img/MARYAJ.png" />
+                                </div>
+                                <div class="arrow arrow-2">
+                                    <span></span>
+                                    <span></span>
+                                    <span></span>
+                                </div>
+
+                                <div class="content-box rule-content-2 hide">
+                                    @Html.Raw(Question.h5)
+
+                                </div>
+
+                                <hr class="line2" style="    margin-top: 25px;" />
+                            </div>
+
+                            <div class="rule-info-container button-box-animation-v1 rule-info-3" onclick="ruleDetailButton_Click(3)">
+                                <div>
+                                    <img src="~/img/LOTTO3.png" />
+                                </div>
+                                <div class="arrow arrow-3">
+                                    <span></span>
+                                    <span></span>
+                                    <span></span>
+                                </div>
+                                <div class="content-box rule-content-3 hide">
+                                    @Html.Raw(Question.h6)
+                                </div>
+                                <hr class="line2" style="    margin-top: 25px;" />
+                            </div>
+                        }
+                    }
+                </div>
+            </section>
+        </div>
+    </div>
+</div>
+
+<script>
+    function ruleDetailButton_Click(type) {
+        if (type == 1) {
+            $(".rule-content-1").removeClass("hide");
+            $(".arrow-1").addClass("arrow-rotate");
+
+            $(".rule-content-2").addClass("hide");
+            $(".rule-content-3").addClass("hide");
+            $(".arrow-2").removeClass("arrow-rotate");
+            $(".arrow-3").removeClass("arrow-rotate");
+
+        } else if (type == 2) {
+            $(".rule-content-2").removeClass("hide");
+            $(".arrow-2").addClass("arrow-rotate");
+
+            $(".rule-content-1").addClass("hide");
+            $(".rule-content-3").addClass("hide");
+            $(".arrow-1").removeClass("arrow-rotate");
+            $(".arrow-3").removeClass("arrow-rotate");
+        }
+        else if (type == 3) {
+            $(".rule-content-3").removeClass("hide");
+            $(".arrow-3").addClass("arrow-rotate");
+
+            $(".rule-content-2").addClass("hide");
+            $(".rule-content-1").addClass("hide");
+            $(".arrow-2").removeClass("arrow-rotate");
+            $(".arrow-1").removeClass("arrow-rotate");
+        }
+    }
+</script>
+
+
+<script>
+    stopLoading();
+</script>
+
+

+ 41 - 0
website/Views/Home/TermResult.cshtml

@@ -0,0 +1,41 @@
+@*
+    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
+*@
+@using LotteryWebApp.Common;
+
+@model TermResultModel
+
+<div>
+    @*    @{
+    string[] data_one = Model.listTerm[0].numberGame.Split(Model.listTerm[0].split);
+    string[] data_two = Model.listTerm[0].win4Game.Split(Model.listTerm[0].split);
+    string[] bolet = Model.listTerm[0].bolet.Split(Model.listTerm[0].split);
+    string[] mayraj = Model.listTerm[0].mariaj.Split(Model.listTerm[0].split);
+    string[] lotto3 = Model.listTerm[0].lotto3.Split(Model.listTerm[0].split);
+    }*@
+    @{
+        if (Model.termType == Constants.NEW_YORK_BOLET_CODE)
+        {
+            @await Component.InvokeAsync("LotoNumber", new {data= Model.listTerm[0], type = Constants.NEW_YORK_NUMBERS_CODE,})
+            @await Component.InvokeAsync("LotoNumber", new {data= Model.listTerm[0], type = Constants.NEW_YORK_WIN4_CODE,})
+            @await Component.InvokeAsync("LotoNumber", new {data= Model.listTerm[0], type = Constants.NEW_YORK_BOLET_CODE,})
+            @await Component.InvokeAsync("LotoNumber", new {data= Model.listTerm[0], type = Constants.NEW_YORK_MAYRAJ_CODE,})
+            @await Component.InvokeAsync("LotoNumber", new {data= Model.listTerm[0], type = Constants.NEW_YORK_LOTTO3_CODE,})
+        }
+        else if (Model.termType == Constants.FLORIDA_BOLET_CODE)
+        {
+            @await Component.InvokeAsync("LotoNumber", new {data= Model.listTerm[0], type = Constants.FLORIDA_PICK3_CODE,})
+            @await Component.InvokeAsync("LotoNumber", new {data= Model.listTerm[0], type = Constants.FLORIDA_PICK4_CODE,})
+            @await Component.InvokeAsync("LotoNumber", new {data= Model.listTerm[0], type = Constants.FLORIDA_BOLET_CODE,})
+            @await Component.InvokeAsync("LotoNumber", new {data= Model.listTerm[0], type = Constants.FLORIDA_MAYRAJ_CODE,})
+            @await Component.InvokeAsync("LotoNumber", new {data= Model.listTerm[0], type = Constants.FLORIDA_LOTTO3_CODE,})
+        }
+        else if (Model.termType == Constants.BOULCHANS_CODE)
+        {
+            for (int i = 0; i < Model.listTerm.Count; i++)
+            {
+                @await Component.InvokeAsync("LotoNumber", new {data= Model.listTerm[i], type = Constants.BOULCHANS_CODE,})
+            }
+        }
+    }
+</div>

+ 78 - 0
website/Views/Home/TermResultHistory.cshtml

@@ -0,0 +1,78 @@
+@*
+    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
+*@
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Common;
+@using LotteryWebApp.Service;
+
+@model TermResultHistoryModel
+
+@{
+    for (int i = 0; i < Model.listTerm.Count; i++)
+    {
+        Term term = Model.listTerm[i];
+        string[] data_one = term.numberGame.Split(term.split);
+        string[] data_two = term.win4Game.Split(term.split);
+        string[] bolet = term.bolet.Split(term.split);
+        string[] mayraj = term.mariaj.Split(term.split);
+        string[] lotto3 = term.lotto3.Split(term.split);
+
+
+
+        <div class="row">
+            <div class="col-3" style="text-align:center;    padding-left: 25px;">
+                @{
+                    if (Model.termType != Constants.BOULCHANS_CODE)
+                    {
+                        if (term.isEvening == Constants.AFTERNOON_CODE)
+                        {
+                            <img src="~/img/ico-sun 1.png" />
+                        }
+                        else
+                        {
+                            <img src="~/img/moon-lg 7.png" />
+                        }
+                    }
+                }
+                <h6>@term.date_random</h6>
+            </div>
+
+            <div class="col-9">
+                <div>
+                    @{
+                        if (Model.termType == Constants.BOULCHANS_CODE)
+                        {
+                            string[] boulchains = new string[] { };
+                            var myList = new List<string>();
+                            myList.Add(term.result);
+                            var myArray = myList.ToArray();
+                            boulchains = myList.ToArray();
+                            @await Component.InvokeAsync("LotoNumberHistory", new {data= boulchains, term = term, type = Constants.BOULCHANS_CODE,})
+                        }
+                        else if (Model.termType == Constants.NEW_YORK_BOLET_CODE)
+                        {
+                            @await Component.InvokeAsync("LotoNumberHistory", new {data= data_one, type = Constants.NEW_YORK_NUMBERS_CODE,})
+                            @await Component.InvokeAsync("LotoNumberHistory", new {data= data_two, type = Constants.NEW_YORK_WIN4_CODE,})
+                            @await Component.InvokeAsync("LotoNumberHistory", new {data= bolet, type = Constants.NEW_YORK_BOLET_CODE,})
+                            @await Component.InvokeAsync("LotoNumberHistory", new {data= mayraj, type = Constants.NEW_YORK_MAYRAJ_CODE,})
+                            @await Component.InvokeAsync("LotoNumberHistory", new {data= lotto3, type = Constants.NEW_YORK_LOTTO3_CODE,})
+                        }
+                        else
+                        {
+                            @await Component.InvokeAsync("LotoNumberHistory", new {data= data_one, type = Constants.FLORIDA_PICK3_CODE,})
+                            @await Component.InvokeAsync("LotoNumberHistory", new {data= data_two, type = Constants.FLORIDA_PICK4_CODE,})
+                            @await Component.InvokeAsync("LotoNumberHistory", new {data= bolet, type = Constants.FLORIDA_BOLET_CODE,})
+                            @await Component.InvokeAsync("LotoNumberHistory", new {data= mayraj, type = Constants.FLORIDA_MAYRAJ_CODE,})
+                            @await Component.InvokeAsync("LotoNumberHistory", new {data= lotto3, type = Constants.FLORIDA_LOTTO3_CODE,})
+                        }
+                    }
+                </div>
+
+            </div>
+
+        </div>
+        <hr class="line2" style="    margin: -5px 10px 15px 10px;" />
+    }
+}

+ 405 - 0
website/Views/Home/Transfer.cshtml

@@ -0,0 +1,405 @@
+@{
+    ViewData["Title"] = "Transfer";
+    Layout = "~/Views/Shared/_NothingLayout.cshtml";
+}
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Common;
+@using LotteryWebApp.Extensions;
+@using LotteryWebApp.Service;
+@using System.Globalization;
+
+@model HomeTransfer_ViewModel
+
+@{
+    if (Model.transferData != null)
+    {
+
+    }
+}
+
+<div class="app-content content" style="position:relative">
+    <div class="card-title text-center ">
+        <div class="news-button-header-container" style="text-align: start; margin: 0 10px;">
+            @await Component.InvokeAsync("SmallHeader", new { title = Lang.transfer.ToUpper()})
+        </div>
+    </div>
+
+    <div class="content-wrapper" style="margin-top:80px; padding-bottom: 60px !important;">
+        <div class="content-body">
+            <section class="flexbox-container">
+                <div class="col-12 align-items-center justify-content-center">
+                    <div class="">
+
+                        @{
+                            if (Model.step != Constants.TRANSFER_RESULT)
+                            {
+                                <div class="row">
+                                    <div class="col-6">
+                                        <a>
+                                            <h5>
+                                                @Lang.bee_account
+                                            </h5>
+                                        </a>
+                                    </div>
+                                    <div class="col-6" style="text-align:end;">
+                                        <h4 class="text-bold-700 text-cash">
+                                            @double.Parse(Model.userStatus.bet_coin).ToString("N0",new CultureInfo("en-US")) HTG
+                                        </h4>
+                                    </div>
+                                </div>
+                                <hr class="line2" style="margin-top:0px;" />
+
+                            }
+                        }
+
+
+                        <form class="form-horizontal" action="@ViewBag.MyConfig.MyValue/Home/Transfer" method="post">
+
+                            @Html.AntiForgeryToken()
+                            <input type="hidden" name="walletType" class="walletType" id="walletType" value="@Model.walletType" />
+                            <input type="hidden" name="content" class="content" id="content" value="" />
+
+                            @{
+                                if (Model.step == Constants.TRANSFER_SHOW || Model.step == Constants.TRANSFER_CONFIRM)
+                                {
+                                // for choosing
+                                    <div>
+                                        <h6>@Lang.select_an_account</h6>
+                                    </div>
+                                    if (Model.step == Constants.TRANSFER_SHOW)
+                                    {
+                                        <div class="scroll-item-container" style="margin-bottom:20px;">
+                                            <div class="item-box-large">
+                                                <a class="@(Model.walletType == Constants.BASIC_WALLET_TRANSFER ? "active": "")"
+                                           href="@ViewBag.MyConfig.MyValue/Home/Transfer?walletType=@Constants.BASIC_WALLET_TRANSFER">
+                                                    <img style="    width: 100px;" src="~/img/natcom.png" />
+                                                </a>
+                                            </div>
+                                            <div class="item-box-large">
+                                                <a class="@(Model.walletType == Constants.NATCASH_WALLET_TRANSFER ? "active": "")"
+                                           href="@ViewBag.MyConfig.MyValue/Home/Transfer?walletType=@Constants.NATCASH_WALLET_TRANSFER">
+                                                    <img style="    width: 100px;" src="~/img/Logo Natcash.png" />
+                                                </a>
+                                            </div>
+                                        </div>
+                                    }
+                                    else
+                                    {
+                                        if (Model.walletType == Constants.BASIC_WALLET_TRANSFER)
+                                        {
+                                            <div class="scroll-item-container" style="margin-bottom:20px;">
+                                                <div class="item-box-large">
+                                                    <a class="active"
+                                           href="@ViewBag.MyConfig.MyValue/Home/Transfer?walletType=@Constants.BASIC_WALLET_TRANSFER">
+                                                        <img style="    width: 100px;" src="~/img/natcom.png" />
+                                                    </a>
+                                                </div>
+                                            </div>
+                                        }
+                                        else
+                                        {
+                                            <div class="scroll-item-container" style="margin-bottom:20px;">
+                                                <div class="item-box-large">
+                                                    <a class="active"
+                                           href="@ViewBag.MyConfig.MyValue/Home/Transfer?walletType=@Constants.NATCASH_WALLET_TRANSFER"
+                                           style="padding-top: 5px;">
+                                                        <img style="    width: 100px;" src="~/img/Logo Natcash.png" />
+                                                    </a>
+                                                </div>
+                                            </div>
+                                        }
+                                    }
+
+                                    //<fieldset class="form-group position-relative has-icon-left">
+                                    //    <label>@Lang.sender_phone</label>
+                                    //    <input type="number" class="data-input-box form-control" id="sendernumber" placeholder="@Lang.from_your_number" name="sendernumber" required disabled value="@Model.profile.users">
+
+                                    //    <div class="form-control-position" style="top: 32px;">
+                                    //        <img src="~/img/icons8-user-30.png" style="width:20px;" />
+                                    //    </div>
+                                    //</fieldset>
+
+                                    //if (Model.walletType == Constants.NATCASH_WALLET_TRANSFER)
+                                    //{
+                                    //    <fieldset class="form-group position-relative has-icon-left">
+                                    //        <label>@Lang.receiver_phone</label>
+                                    //        <input type="number" class="data-input-box form-control" id="receivernumber" placeholder="@Lang.to_other_natcom_number" name="receivernumber" required
+                                    //       @(Model.step == Constants.TRANSFER_CONFIRM ? "disabled" : "") value="@(Model.transferData != null ? Model.transferData.msisdnReceive : "")">
+                                    //        <div class="form-control-position" style="top: 35px;">
+                                    //            <i class="fa fa-key"></i>
+                                    //        </div>
+                                    //    </fieldset>
+                                    //}
+
+
+                                    <fieldset class="form-group position-relative has-icon-left">
+                                        <label>@Lang.money_on</label>
+                                        <input type="text" class="data-input-line form-control" id="moneyon" placeholder="@Lang.enter_amount" name="moneyon" required
+                                           @(Model.step == Constants.TRANSFER_CONFIRM ? "disabled" : "") value="@(Model.transferData != null ? Model.transferData.money : "")">
+                                    </fieldset>
+
+                                    if (Model.step == Constants.TRANSFER_SHOW)
+                                    {
+                                        //<div class="scroll-item-container" style="margin-bottom:20px;">
+                                        //    <div class="item-box">
+                                        //        <a href="#" class="value-10" onclick="chooseBox_Click(20)">
+                                        //            20
+                                        //        </a>
+                                        //    </div>
+                                        //    <div class="item-box">
+                                        //        <a href="#" class="value-10" onclick="chooseBox_Click(50)">
+                                        //            50
+                                        //        </a>
+                                        //    </div>
+                                        //    <div class="item-box">
+                                        //        <a href="#" class="value-10" onclick="chooseBox_Click(100)">
+                                        //            100
+                                        //        </a>
+                                        //    </div>
+                                        //    <div class="item-box">
+                                        //        <a href="#" class="value-1000" onclick="chooseBox_Click(200)">
+                                        //            200
+                                        //        </a>
+                                        //    </div>
+                                        //    <div class="item-box">
+                                        //        <a href="#" class="value-5000" onclick="chooseBox_Click(500)">
+                                        //            500
+                                        //        </a>
+                                        //    </div>
+                                        //</div>
+
+                                        <h6>
+                                            @Lang.or_select
+                                        </h6>
+
+                                        <div class="row">
+                                            <div class="col-4">
+                                                <div class="box-coin-choose" onclick="chooseBox_Click(20)">
+                                                    20
+                                                </div>
+                                            </div>
+                                            <div class="col-4">
+                                                <div class="box-coin-choose" onclick="chooseBox_Click(50)">
+                                                    50
+                                                </div>
+                                            </div>
+                                            <div class="col-4">
+                                                <div class="box-coin-choose" onclick="chooseBox_Click(100)">
+                                                    100
+                                                </div>
+                                            </div>
+                                            <div class="col-4">
+                                                <div class="box-coin-choose" onclick="chooseBox_Click(200)">
+                                                    200
+                                                </div>
+                                            </div>
+                                            <div class="col-4">
+                                                <div class="box-coin-choose" onclick="chooseBox_Click(300)">
+                                                    300
+                                                </div>
+                                            </div>
+                                            <div class="col-4">
+                                                <div class="box-coin-choose" onclick="chooseBox_Click(500)">
+                                                    500
+                                                </div>
+                                            </div>
+                                        </div>
+
+                                        <script>
+                                            function chooseBox_Click(value){
+                                                $("#moneyon").val(value);
+                                            }
+                                        </script>
+                                    }
+                                    else if (Model.step == Constants.TRANSFER_CONFIRM)
+                                    {
+                                        <div>
+                                            <h6>@Lang.fee_tranfer</h6>
+                                            <h5>@Lang.free</h5>
+                                        </div>
+                                    }
+                                }
+                                else if (Model.step == Constants.TRANSFER_RESULT)
+                                {
+
+                                    <div class="card-header border-0 card-box">
+                                        <div class="card-title text-center ">
+                                            <div>
+                                                <div style="    margin-top: 50px;">
+                                                    <img class="logo-app" src="~/img/Group854.png" />
+                                                </div>
+
+                                                <div style="position: relative; margin-top: 10px;">
+                                                    <h2 class="text-style-main-large">
+                                                        @Lang.success
+                                                    </h2>
+                                                </div>
+
+                                                <div style="position: relative; margin-top: 10px;">
+                                                    <h4 class="text-style-blue-normal">
+                                                        @Lang.transfer_success
+                                                    </h4>
+                                                </div>
+
+                                                <hr class="line-2">
+
+                                                <div>
+                                                    <div class="row text-box-row">
+                                                        <div class="col-6 text-start">
+                                                            <h6>@Lang.amount_transfered</h6>
+                                                        </div>
+                                                        <div class="col-6 text-end-bold">
+                                                            @double.Parse(Model.transaction.money).ToString("N0",new CultureInfo("en-US")) HTG
+                                                        </div>
+                                                    </div>
+
+                                                    <div class="row text-box-row">
+                                                        <div class="col-6 text-start">
+                                                            <h6>@Lang.transfer_method</h6>
+                                                        </div>
+                                                        @{
+                                                            if (Model.walletType == Constants.BASIC_WALLET_TRANSFER)
+                                                            {
+                                                                <div class="col-6 text-end-bold">
+                                                                    @Lang.basic_account
+                                                                </div>
+                                                            }
+                                                            else
+                                                            {
+                                                                <div class="col-6 text-end-bold">
+                                                                    @Lang.NatCash
+                                                                </div>
+                                                            }
+                                                        }
+                                                    </div>
+
+                                                    <div class="row text-box-row">
+                                                        <div class="col-4 text-start">
+                                                            <h6>@Lang.sender</h6>
+                                                        </div>
+                                                        <div class="col-8 text-end-bold">
+                                                            @Model.transaction.acountSend
+                                                        </div>
+                                                    </div>
+
+                                                    <div class="row text-box-row">
+                                                        <div class="col-4 text-start">
+                                                            <h6>@Lang.receiver</h6>
+                                                        </div>
+                                                        <div class="col-8 text-end-bold">
+                                                            @Model.transaction.acountRecieve
+                                                        </div>
+                                                    </div>
+
+                                                    <div class="row text-box-row">
+                                                        <div class="col-4 text-start">
+                                                            <h6>@Lang.fee</h6>
+                                                        </div>
+                                                        <div class="col-8 text-end-bold">
+                                                            0 HTG
+                                                        </div>
+                                                    </div>
+
+                                                    <hr class="line-2">
+
+                                                    <div class="row text-box-row">
+                                                        <div class="col-4 text-start">
+                                                            <h6>@Lang.time</h6>
+                                                        </div>
+                                                        <div class="col-8 text-end-bold">
+                                                            @Model.transaction.timeRequest
+                                                        </div>
+                                                    </div>
+                                                </div>
+
+                                            </div>
+                                        </div>
+                                    </div>
+                                }
+                            }
+
+                            <div class="row button-on-footer" style="margin-top:50px;">
+                                <div class="col-12">
+                                    <button type="button" class="btn btn-outline-primary btn-block login-button"
+                                            onclick="@(Model.step == Constants.TRANSFER_SHOW ? "transactionConfirmButtonAction_Click(" + Model.walletType + ")" :
+                                            Model.step == Constants.TRANSFER_CONFIRM ? "transactionConfirmOtpButtonAction_Click()": "transactionRedirectButtonAction_Click()")">
+                                        <i class="ft-unlock"></i> @(Model.step == Constants.TRANSFER_SHOW ? Lang._continue.ToUpper() :
+                                        Model.step == Constants.TRANSFER_CONFIRM ? Lang.confirm : Lang.return_home_page)
+                                    </button>
+                                </div>
+                            </div>
+
+                        </form>
+
+                    </div>
+                </div>
+            </section>
+        </div>
+    </div>
+</div>
+
+<script>
+    stopLoading();
+</script>
+
+<script>
+    var walletTypeG = null;
+function transactionConfirmButtonAction_Click(walletType) {
+    let check = 1;
+    let receivernumber = null;
+    walletTypeG = walletType;
+    //if (walletType == natcash_wallet_transfer) {
+    //    receivernumber = $("#receivernumber").val();
+    //    if (receivernumber == null || receivernumber == "") {
+    //        check *= 0;
+    //        $("#receivernumber").addClass("error-note-box");
+    //    }
+    //}
+    let moneyon = $("#moneyon").val();
+    if (moneyon == null || moneyon == "" || moneyon > 10000) {
+        check *= 0;
+        $("#moneyon").addClass("error-note-line");
+
+        if (moneyon > 10000) {
+            toastr.error('@Lang.max_transfer_1000HTG');
+        }
+    }
+
+    if (check == 1) {
+        let subDomain = $("#subDomain").val();
+        // show modal to enter otp
+        let otpUrl = subDomain + '/Home/TransactionConfirm_Action'
+        startLoading();
+        $.ajax({
+            type: "POST",
+            url: otpUrl,
+            headers: { 'RequestVerificationToken': $('input[name=__RequestVerificationToken]').val() },
+            data: {
+                "__RequestVerificationToken": $('input[name=__RequestVerificationToken]').val(),
+                walletType: walletType,
+                receivernumber: receivernumber,
+                moneyon: moneyon
+            },
+            success: function (data) {
+                stopLoading();
+                if (data.code == success) {
+                    // redirect to success 
+                    window.location.href = subDomain + '/Home/Transfer?step=2&walletType=' + walletType;
+                } else if (data.code == session_expired) {
+                    window.location.href = subDomain + '/Account/Login';
+                } else {
+                    toastr.error(data.message);
+                }
+            },
+            failure: function (data) {
+                stopLoading();
+            },
+            error: function (data) {
+                stopLoading();
+            }
+        });
+    }
+}
+</script>

+ 11 - 0
website/Views/Home/Update.cshtml

@@ -0,0 +1,11 @@
+@{
+    ViewData["Title"] = "Update";
+    Layout = "~/Views/Shared/_NothingLayout.cshtml";
+}
+
+<div style="    margin-top: calc(30%);">
+    <img src="~/img/upgrading.jpeg" style="    max-width: 100%;"/>
+    <h1 style="text-align:center; color: red;">The system is Updating ...</h1>
+</div>
+
+

+ 17 - 0
website/Views/Partial/Inform.cshtml

@@ -0,0 +1,17 @@
+@*
+    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
+*@
+
+@using LotteryWebApp.Languages;
+
+@using LotteryWebApp.Models;
+
+@model PartialInform_ViewModel
+
+<div class="modal-content">
+    <div class="modal-body">
+        <div class="language-container">
+            <h2 id="message" style=" text-align: center; margin-bottom: 20px; color:red;">@Model.message</h2>
+        </div>
+    </div>
+</div>

+ 37 - 0
website/Views/Partial/Language.cshtml

@@ -0,0 +1,37 @@
+@*
+    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
+*@
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Extensions;
+
+@{
+    String culture = Context.Session.GetComplexData<String>("culture");
+}
+
+<div class="modal-content">
+    <div class="modal-header">
+        <h4 class="modal-title" id="modalLabelService">@Lang.language</h4>
+        <button type="button" class="close" data-dismiss="modal" aria-label="Close" style="text-align: end;">
+            <span aria-hidden="true">×</span>
+        </button>
+    </div>
+    <div class="modal-body">
+        <div class="language-container">
+            <div class="language-box-modal" value="fr" onclick="changeLanguageAction('fr'); return 0;">
+                <input type="radio" id="html" name="fav_language">
+                <label for="html">
+                    @Lang.english
+                    <img class="language-flag" src="~/img/en_flag.png" style="width:30px;" />
+                </label>
+            </div>
+            <br>
+            <div class="language-box-modal" value="en" onclick="changeLanguageAction('en'); return 0;">
+                <input type="radio" id="css" name="fav_language">
+                <label for="css">
+                    @Lang.creole
+                    <img class="language-flag" src="~/img/Flag_of_Haiti.png" style="width:30px;" />
+                </label>
+            </div>
+        </div>
+    </div>
+</div>

+ 84 - 0
website/Views/Partial/OTP.cshtml

@@ -0,0 +1,84 @@
+@*
+    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
+*@
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Models;
+@using LotteryWebApp.Common;
+
+@model PartialTransaction_ViewModel
+
+<div class="modal-content">
+    <div class="modal-header">
+        <h4 class="modal-title" id="modalLabelService">@Lang.confirm_transaction</h4>
+        @*        <button type="button" class="close" data-dismiss="modal" aria-label="Close" style="text-align: end;">
+            <span aria-hidden="true">×</span>
+            </button>*@
+    </div>
+    <div class="modal-body" style="    padding-top: 0px;">
+        <div class="language-container">
+            <h2 id="message" style=" text-align: center; margin-bottom: 20px; color:red;"></h2>
+
+            @{
+                //if (Model.result == "-1")
+                //{
+                //// fail
+                //    <fieldset class="form-group position-relative has-icon-left">
+                //        <a style="font-weight:800; color:red;">@Lang.wrong_otp</a>
+                //    </fieldset>
+
+                //    <div class="row">
+                //        <div class="col-4 resent-tran">
+                //        </div>
+                //        <div class="col-4 confirm-tran">
+                //            <a data-dismiss="modal">
+                //                @Lang.close
+                //            </a>
+                //        </div>
+                //        <div class="col-4 cancel-tran">
+                //        </div>
+                //    </div>
+                //}
+                //else
+                //{
+                //String url = @ViewBag.MyConfig.MyValue + "/" + Model.url;
+                //int step = Model.url == "Home/Transfer" ? Constants.TRANSFER_CHECK_OTP : Constants.PAYMENT_CHECK_OTP;
+                //<form id="transfer-form" class="form-horizontal" action="@url" method="post">
+
+                @Html.AntiForgeryToken()
+                //<input type="hidden" name="step" class="step" id="step" value="@step" />
+
+                <fieldset class="form-group position-relative has-icon-left">
+                    <label>@Model.content</label>
+                    <input type="text" class="data-input-line form-control" id="otp" placeholder="@Lang.enter_otp" name="otp" required
+                           style="font-size:16px; color:red; width: 85%; display: inline-block;">
+                    <a id="time-counter" style="font-weight:800; color:red;">60s</a>
+                </fieldset>
+
+                <div class="row">
+                    <div class="col-4 resent-tran">
+                        <a class="resent-box hide" onclick="@(Model.resentFunc + "()")">
+                            @Lang.resent_otp
+                        </a>
+                    </div>
+                    <div class="col-4 confirm-tran">
+                        <a class="confirm-box" onclick="@(Model.confirmFunc + "()")">
+                            @Lang.confirm
+                        </a>
+                    </div>
+                    <div class="col-4 cancel-tran">
+                        <a data-dismiss="modal">
+                            @Lang.cancel
+                        </a>
+                    </div>
+                </div>
+                <script>
+                    counterOTP();
+                </script>
+                //</form>
+                //}
+            }
+        </div>
+    </div>
+
+</div>
+

+ 122 - 0
website/Views/Profile/ChangePassword.cshtml

@@ -0,0 +1,122 @@
+@{
+    ViewData["Title"] = "ChangePassword";
+    Layout = "~/Views/Shared/_Layout.cshtml";
+}
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Models;
+@using LotteryWebApp.Common;
+
+@model ProfileChangePassword_ViewModel
+
+<div class="app-content content">
+
+    @{
+        if (Model.code == Code.SUCCESS)
+        {
+            <div class="card-title text-center ">
+                <div class="news-button-header-container" style="text-align: start; margin: 0 10px;">
+                    @await Component.InvokeAsync("SmallHeader", new { title = Lang.change_password.ToUpper()})
+                </div>
+            </div>
+        }
+    }
+
+    <div class="content-wrapper" style="margin-top:80px;">
+        <div class="content-header row">
+        </div>
+        <div class="content-body">
+            <section class="flexbox-container">
+                <div class="col-12 align-items-center justify-content-center">
+                    <div class="">
+                        @{
+                            if (Model.code == Code.SUCCESS)
+                            {
+                                <form id="login-form" class="form-horizontal" action="@ViewBag.MyConfig.MyValue/Profile/ChangePassword" method="post">
+
+                                    @Html.AntiForgeryToken()
+
+                                    <fieldset class="form-group position-relative has-icon-left">
+
+                                        <input type="password" class="data-input-box form-control" id="oldpass"
+                                           placeholder="@Lang.enter_your_old_password" name="oldpass" required>
+
+                                        <div class="form-control-position" style="top: 8px;">
+                                            <i class="fa fa-user"></i>
+                                        </div>
+                                    </fieldset>
+                                    <fieldset class="form-group position-relative has-icon-left">
+
+                                        <input type="password" class="data-input-box form-control" id="newpass"
+                                           placeholder="@Lang.enter_your_new_password" name="newpass" required>
+
+                                        <div class="form-control-position" style="top: 8px;">
+                                            <i class="fa fa-key"></i>
+                                        </div>
+                                    </fieldset>
+
+                                    <fieldset class="form-group position-relative has-icon-left">
+
+                                        <input type="password" class="data-input-box form-control" id="confirmpass"
+                                           placeholder="@Lang.confirm_your_new_password" name="confirmpass" required>
+
+                                        <div class="form-control-position" style="top: 8px;">
+                                            <i class="fa fa-key"></i>
+                                        </div>
+                                    </fieldset>
+
+                                    <div class="row" style="margin-top:1rem;">
+                                        <div class="col-12">
+                                            <button type="button" class="btn btn-outline-primary btn-block  login-button"
+                                                onclick="changePasswordButtonAction_Click()">
+                                                <i class="ft-unlock"></i> @Lang.update.ToUpper()
+                                            </button>
+                                        </div>
+                                    </div>
+
+                                </form>
+                            }
+                            else
+                            {
+                                <div class="card-header border-0 card-box">
+                                    <div class="card-title text-center ">
+                                        <div>
+                                            <div style="    margin-top: 50px;">
+                                                <img class="logo-app" src="~/img/Group854.png" />
+                                            </div>
+
+                                            <div style="position: relative; margin-top: 10px;">
+                                                <h2 class="text-style-main-large">
+                                                    @Lang.success
+                                                </h2>
+                                            </div>
+
+                                            <div style="position: relative; margin-top: 10px;">
+                                                <h4 class="text-style-blue-normal">
+                                                    @Lang.transfer_success
+                                                </h4>
+                                            </div>
+
+                                            <hr class="line-2">
+
+                                        </div>
+                                    </div>
+                                </div>
+                            }
+                        }
+
+
+                    </div>
+                </div>
+            </section>
+        </div>
+    </div>
+</div>
+
+<script>
+    stopLoading();
+</script>
+
+
+

+ 107 - 0
website/Views/Profile/HowToPlay.cshtml

@@ -0,0 +1,107 @@
+@{
+    ViewData["Title"] = "HowToPlay";
+    Layout = "~/Views/Shared/_Layout.cshtml";
+}
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Common;
+
+@model ProfileHowToPlay_ViewModel
+
+
+<div class="app-content content" style="position:relative">
+
+    <div class="card-title text-center ">
+        <div class="news-button-header-container" style="text-align: start; margin: 0 10px;">
+            @await Component.InvokeAsync("SmallHeader", new { title = Lang.how_to_play.ToUpper()})
+        </div>
+    </div>
+
+
+    <div class="content-wrapper buy-ticket-container" style="margin-top:50px;">
+        <div class="content-body">
+            <section class="flexbox-container">
+
+                <div class="row tabs-style" style="    margin-top: 30px;">
+
+                    <div class="col-3 tab-style">
+                        <input type="radio" id="tab-1" name="tab-group-1" @(Model.termType == Constants.BOLET_CODE ? "checked" : "")>
+                        <label for="tab-1">
+                            <a href="@ViewBag.MyConfig.MyValue/Profile/HowToPlay?termType=@Constants.BOLET_CODE">
+                                BOLET
+                            </a>
+                        </label>
+                    </div>
+
+                    <div class="col-3 tab-style">
+                        <input type="radio" id="tab-2" name="tab-group-1" @(Model.termType == Constants.MAYRAJ_CODE ? "checked" : "")>
+                        <label for="tab-2">
+
+                            <a href="@ViewBag.MyConfig.MyValue/Profile/HowToPlay?termType=@Constants.MAYRAJ_CODE">
+                                MARYAJ
+                            </a>
+                        </label>
+                    </div>
+
+                    <div class="col-3 tab-style">
+                        <input type="radio" id="tab-3" name="tab-group-1" @(Model.termType == Constants.LOTTO3_CODE ? "checked" : "")>
+                        <label for="tab-3">
+                            <a href="@ViewBag.MyConfig.MyValue/Profile/HowToPlay?termType=@Constants.LOTTO3_CODE">
+                                LOTTO3
+                            </a>
+                        </label>
+                    </div>
+
+                    <div class="col-3 tab-style">
+                        <input type="radio" id="tab-3" name="tab-group-1" @(Model.termType == Constants.BOULCHANS_CODE ? "checked" : "")>
+                        <label for="tab-3">
+                            <a href="@ViewBag.MyConfig.MyValue/Profile/HowToPlay?termType=@Constants.BOULCHANS_CODE">
+                                BOULCHANS
+                            </a>
+                        </label>
+                    </div>
+                </div>
+
+
+
+                @{
+                    if (Model.termType == Constants.BOLET_CODE)
+                    {
+                        <div style="    margin: 10px;">
+                            @Html.Raw(Question.p1)
+                        </div>
+                    }
+                    else if (Model.termType == Constants.MAYRAJ_CODE)
+                    {
+                        <div style="    margin: 10px;">
+
+                            @Html.Raw(Question.p2)
+                        </div>
+                    }
+                    else if (Model.termType == Constants.LOTTO3_CODE)
+                    {
+                        <div style="    margin: 10px;">
+
+                            @Html.Raw(Question.p3)
+                        </div>
+                    }
+                    else if (Model.termType == Constants.BOULCHANS_CODE)
+                    {
+                        <div style="    margin: 10px;">
+
+                            @Html.Raw(Question.p4)
+                        </div>
+                    }
+                }
+            </section>
+        </div>
+    </div>
+</div>
+
+<script>
+    stopLoading();
+</script>
+
+
+

+ 163 - 0
website/Views/Profile/Index.cshtml

@@ -0,0 +1,163 @@
+@{
+    ViewData["Title"] = "Index";
+    Layout = "~/Views/Shared/_Layout.cshtml";
+}
+
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using System.Globalization;
+@using LotteryWebApp.Common;
+@using LotteryWebApp.Service;
+
+@model ProfileViewModel
+
+<div class="app-content content" style="position:relative">
+
+    <div class="content-wrapper buy-ticket-container" style="">
+        <div class="content-body">
+            <section class="flexbox-container">
+
+                <div class="profile-info-container" style="position:relative; height:200px; margin: -5px;">
+                    <div class="profile-info-box">
+                        @*<img src="@Model.profile.picture" />*@
+                        @*<img src="@(Model.profile.picture != null && Model.profile.picture != "" ? Model.profile.picture : "/img/8b6f5f94a53dbc3c8240347693830120.jpg")" />*@
+                        <div class="account-header-image" style="width:100px; height:100px;    margin-bottom: 10px;">
+                            <img src="@(Model.profile.realPicture != null && Model.profile.realPicture != "" ? Model.profile.picture : "/img/8b6f5f94a53dbc3c8240347693830120.jpg")" />
+                        </div>
+                        <h3>
+                            @Model.profile.fullName
+                        </h3>
+                        <h4>
+                            @Model.profile.users
+                        </h4>
+                    </div>
+                </div>
+
+                <div class="" style="    padding: 10px;background: white;">
+                    <div class="button-box-animation">
+                    </div>
+                    <div class="row" style="    margin-top: 35px;">
+                        <div class="col-2">
+                            <img class="image-w-24" src="~/img/Vector4.png" />
+                        </div>
+                        <div class="col-10">
+                            <a class="profile-start-item">@Lang.winning_account</a>
+                            <a class="profile-end-item">@double.Parse(Model.userStatus.bet_coin).ToString("N0",new CultureInfo("en-US")) HTG</a>
+
+                            <hr class="line2" />
+
+                        </div>
+                    </div>
+
+                    <div class="button-box-animation" onclick="actionButton_Click('Profile/ProfileInfo')">
+                        <div class="row" style="    margin-top: 15px;">
+                            <div class="col-2">
+                                <img class="image-w-24" src="~/img/Group 83940.png" />
+                            </div>
+                            <div class="col-10">
+                                <a class="profile-start-item">@Lang.profile</a>
+                                <a class="profile-end-item"><i class="fas fa-solid fa-angle-right"></i></a>
+                                <hr class="line2" />
+                            </div>
+                        </div>
+                    </div>
+
+
+                    @*                    <div class="button-box-animation" onclick="actionButton_Click('/Profile/ChangePassword')">
+                    <div class="row" style="    margin-top: 15px;">
+                    <div class="col-2">
+                    <img class="image-w-24" src="~/img/Group 83940.png" />
+                    </div>
+                    <div class="col-10">
+                    <a class="profile-start-item">@Lang.change_password</a>
+                    <a class="profile-end-item"><i class="fas fa-solid fa-angle-right"></i></a>
+                    <hr class="line2" />
+                    </div>
+                    </div>
+                    </div>*@
+
+
+                    <div class="button-box-animation" onclick="actionButton_Click('/Profile/HowToPlay')">
+                        <div class="row" style="    margin-top: 15px;">
+                            <div class="col-2">
+                                <img class="image-w-24" src="~/img/Group 83938.png" />
+                            </div>
+                            <div class="col-10">
+                                <a class="profile-start-item">@Lang.how_to_play</a>
+                                <a class="profile-end-item"><i class="fas fa-solid fa-angle-right"></i></a>
+                                <hr class="line2" />
+                            </div>
+                        </div>
+                    </div>
+
+
+                    <div class="button-box-animation" onclick="actionButton_Click('/Home/Rules')">
+                        <div class="row" style="    margin-top: 15px;">
+                            <div class="col-2">
+                                <img class="image-w-24" src="~/img/Group 83939.png" />
+                            </div>
+                            <div class="col-10">
+                                <a class="profile-start-item">@Lang.rules</a>
+                                <a class="profile-end-item"><i class="fas fa-solid fa-angle-right"></i></a>
+                                <hr class="line2" />
+                            </div>
+                        </div>
+                    </div>
+
+
+                    <div class="button-box-animation">
+                        <div class="row" style="    margin-top: 15px;">
+                            <div class="col-2">
+                                <img class="image-w-24" src="~/img/Group 83942.png" />
+                            </div>
+                            <div class="col-10">
+                                <a class="profile-start-item">@Lang.contact_us</a>
+                                <a class="profile-end-item" style="font-size: 13px; margin-top: 3px;">*5555# or @Lang.call 111 (1HTG/Min)</a>
+                                <hr class="line2" />
+                            </div>
+                        </div>
+                    </div>
+
+                    <div class="button-box-animation" onclick="changeLanguage(); return 0;">
+                        <div class="row" style="    margin-top: 15px;">
+                            <div class="col-2">
+                                <a><i class="fas fa-2x fa-globe-asia"></i></a>
+                            </div>
+                            <div class="col-10">
+                                <a class="profile-start-item">@Lang.language</a>
+                                <hr class="line2" />
+                            </div>
+                        </div>
+                    </div>
+
+                    @{
+                        if (Model.channel == ApiConstants.WEB)
+                        {
+                            <div class="button-box-animation" onclick="actionButton_Click('/Account/Logout')">
+                                <div class="row" style="    margin-top: 15px;">
+                                    <div class="col-2">
+                                        <img class="image-w-24" src="~/img/Group 83943.png" />
+                                    </div>
+                                    <div class="col-10">
+                                        <a class="profile-start-item">@Lang.logout</a>
+                                        <a class="profile-end-item"><i class="fas fa-solid fa-angle-right"></i></a>
+                                        <hr class="line2" />
+                                    </div>
+                                </div>
+                            </div>
+                        }
+                    }
+
+
+                </div>
+
+
+            </section>
+        </div>
+    </div>
+</div>
+
+<script>
+    stopLoading();
+</script>

+ 130 - 0
website/Views/Profile/ProfileInfo.cshtml

@@ -0,0 +1,130 @@
+@{
+    ViewData["Title"] = "ProfileInfo";
+    Layout = "~/Views/Shared/_Layout.cshtml";
+}
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Models;
+@using LotteryWebApp.Common;
+@using System.Globalization;
+
+@model ProfileProfileInfo_ViewModel
+
+@{
+    DateTime oDateTo = DateTime.ParseExact(Model.profile.birthday, "dd/MM/yyyy", CultureInfo.InvariantCulture);
+    String dateTo = oDateTo.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);
+}
+@*//<img src="@(Model.profile.picture != null && Model.profile.picture != "" ? Model.profile.picture : "/img/8b6f5f94a53dbc3c8240347693830120.jpg")" />*@
+
+<div class="app-content content">
+
+    @{
+        <div class="card-title text-center ">
+            <div class="news-button-header-container" style="text-align: start; margin: 0 10px;">
+                @await Component.InvokeAsync("SmallHeader", new { title = Lang.profile.ToUpper()})
+            </div>
+        </div>
+    }
+
+    <div class="content-wrapper" style="margin-top:80px;">
+        <div class="content-header row">
+        </div>
+        <div class="content-body">
+            <section class="flexbox-container">
+                <div class="col-12 align-items-center justify-content-center">
+                    <div class="">
+                        @{
+                            if (Model.code != Code.SUCCESS)
+                            {
+                                <form id="login-form" class="form-horizontal" action="@ViewBag.MyConfig.MyValue/Profile/ChangePassword" method="post">
+
+                                    <div style="text-align: center;">
+                                        <div class="account-header-image" style="width:100px; height:100px;    margin-bottom: 10px; position:relative;">
+                                            <img id="personal-picture" src="@(Model.profile.realPicture != null && Model.profile.realPicture != "" ? Model.profile.picture : "/img/8b6f5f94a53dbc3c8240347693830120.jpg")" />
+                                            <label for="user_avatar" class="label-input-data"></label>
+                                            <input type="file" id="user_avatar" name="user_avatar" class="shifted" style="display: none" />
+                                        </div>
+                                    </div>
+
+
+                                    <fieldset class="form-group position-relative has-icon-left">
+                                        <label>@Lang.phone_number</label>
+                                        <input type="number" class="data-input-box form-control" id="phonenumber"
+                                           name="phonenumber" value="@Model.profile.users" disabled>
+
+                                        <div class="form-control-position" style="top: 35px;">
+                                            <i class="fa fa-user"></i>
+                                        </div>
+                                    </fieldset>
+                                    <fieldset class="form-group position-relative has-icon-left">
+                                        <label>@Lang.name</label>
+
+                                        <input type="text" class="data-input-box form-control" id="fullname"
+                                           placeholder="@Lang.enter_name" name="fullname" required value="@Model.profile.fullName">
+
+                                        <div class="form-control-position" style="top: 35px;">
+                                            <i class="fa fa-key"></i>
+                                        </div>
+                                    </fieldset>
+
+                                    <fieldset class="form-group position-relative has-icon-left">
+                                        <label>@Lang.dateOfBirth</label>
+
+                                        <input type="date" class="data-input-box form-control" id="birthday"
+                                           placeholder="@Lang.enter_birthday" name="birthday" required value="@dateTo">
+
+                                        <div class="form-control-position" style="top: 35px;">
+                                            <i class="fa fa-key"></i>
+                                        </div>
+                                    </fieldset>
+
+                                    <div class="row" style="margin-top:2rem;">
+                                        <div class="col-12">
+                                            <button type="button" class="btn btn-outline-primary btn-block  login-button"
+                                                onclick="updateProfileButtonAction_Click()">
+                                                <i class="ft-unlock"></i> @Lang.update.ToUpper()
+                                            </button>
+                                        </div>
+                                    </div>
+
+                                </form>
+                            }
+                            else
+                            {
+                                <div class="card-header border-0 card-box">
+                                    <div class="card-title text-center ">
+                                        <div>
+                                            <div style="    margin-top: 50px;">
+                                                <img class="logo-app" src="~/img/Group854.png" />
+                                            </div>
+
+                                            <div style="position: relative; margin-top: 10px;">
+                                                <h2 class="text-style-main-large">
+                                                    @Lang.success
+                                                </h2>
+                                            </div>
+
+                                            <div style="position: relative; margin-top: 10px;">
+                                                <h4 class="text-style-blue-normal">
+                                                    @Lang.update_successful
+                                                </h4>
+                                            </div>
+                                            <hr class="line-2">
+                                        </div>
+                                    </div>
+                                </div>
+                            }
+                        }
+                    </div>
+                </div>
+            </section>
+        </div>
+    </div>
+</div>
+
+<script>
+    stopLoading();
+</script>
+
+

+ 360 - 0
website/Views/Shared/Components/AdvertiseArea/AdvertiseArea.cshtml

@@ -0,0 +1,360 @@
+@*
+    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
+*@
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Components;
+
+@model AdvertiseAreaModel
+
+<link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/flip-style.css">
+
+@*<style>
+    .cover {
+    width: 400px;
+    height: 400px;
+    animation: flip-animate 20s linear infinite; /*   Làm xoay các ảnh */
+    transform-style: preserve-3d; /*   các thành phần bên trong class cover sẽ hiển thị dưới dạng 3D */
+    }
+
+    #container .cover div {
+    width: 400px;
+    height: 400px;
+    position: absolute;
+    }
+
+    #container .cover div img {
+    width: 400px;
+    height: 400px;
+    }
+
+    #container .cover .front {
+    transform: translateZ(200px); /*   định vị lại ảnh trong class front dọc theo trục z trong không gian 3D */
+    }
+
+    #container .cover .back {
+    transform: rotateY(180deg) translateZ(200px);
+    /*   xoay ảnh theo trục y là 180 độ và dịch chuyển đến trục Z */
+    }
+
+    #container .cover .left {
+    transform: rotateY(-90deg) translateX(-200px);
+    /*   xoay ảnh theo trục y là -90 độ và dịch chuyển đến trục X */
+    transform-origin: left; /*   Cho phép dịch chuyển phần tử sang trái */
+    }
+
+    #container .cover .right {
+    transform: rotateY(90deg) translateX(200px); /*   xoay ảnh theo trục Y là 90 độ và dịch chuyển đến trục X */
+    transform-origin: right; /*   Cho phép dịch chuyển phần tử sang phải */
+    }
+
+    #container .cover .top {
+    transform: rotateX(-90deg) translateY(-200px); /*   xoay ảnh theo trục X là -90 độ và dịch chuyển đến trục Y */
+    transform-origin: top; /*   Cho phép dịch chuyển phần tử lên trên */
+    }
+
+    #container .cover .bottom {
+    transform: rotateX(90deg) translateY(200px); /*   xoay ảnh theo trục X là 90 độ và dịch chuyển đến trục Y */
+    transform-origin: bottom; /*   Cho phép dịch chuyển phần tử xuống dưới */
+    }
+
+    @@keyframes flip-animate {
+    0% {
+    transform: rotateY(0);
+    }
+
+    100% {
+    transform: rotateY(360deg);
+    }
+    }
+    /* điều khiển các hiệu ứng của thuộc tính animation */
+    </style>*@
+
+<style>
+    .flip-card {
+        display: inline-block;
+        background-color: transparent;
+        width: 300px;
+        height: 300px;
+        perspective: 1000px;
+    }
+
+    .flip-card-inner {
+        position: relative;
+        width: 100%;
+        height: 100%;
+        text-align: center;
+        transition: transform 0.6s;
+        transform-style: preserve-3d;
+        /*box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);*/
+    }
+
+    .flip-card-front,
+    .flip-card-back {
+        position: absolute;
+        width: 100%;
+        height: 100%;
+        backface-visibility: hidden;
+    }
+
+    .flip-card-front {
+        /*background-color: #bbb;*/
+        color: black;
+        z-index: 2;
+    }
+
+    .flip-card-back {
+        /*background-color: #2980b9;*/
+        color: white;
+        transform: rotateX(180deg);
+        z-index: 1;
+    }
+
+    .flip-card .flip-card-inner {
+        animation: rotate 3s .3s infinite;
+    }
+
+    .flip-card:nth-child(2) .flip-card-inner {
+        animation-delay: .6s;
+    }
+
+    /*    .flip-card:nth-child(3) .flip-card-inner {
+                        animation-delay: .9s;
+                    }
+
+                    .flip-card:nth-child(4) .flip-card-inner {
+                        animation-delay: 1.2s;
+                    }*/
+
+    @@keyframes rotate {
+        0%, 60% {
+            transform: rotateX(0);
+        }
+
+        10%, 50% {
+            transform: rotateX(180deg);
+        }
+    }
+</style>
+
+<div class="home-ad1-container" style="background: linear-gradient(182.09deg, #921010 45.77%, rgba(188, 70, 70, 0.704875) 127.71%, rgba(213, 19, 19, 0.541667) 166.12%, rgba(255, 0, 0, 0) 185.46%);">
+    <div class="flip-box icon-one">
+        <div class="home-ad1-info" style="    width: 75%;">
+            <h5>
+                @Lang.have_chance_to_get
+            </h5>
+            <h4>
+                > 1.000.000 HTG
+            </h4>
+
+        </div>
+    </div>
+    <div class="flip-box icon-two" style="    width: 80%;">
+        <div class="home-ad1-info">
+            <div class="row" style="margin: 0 1px;">
+                <div class="time-container" style="width: 60px; font-size: 15px; margin-top: 3px">
+                    @Lang.next_draw
+                </div>
+
+                <div class="time-container">
+                    <div class="time-box">
+                        <h6>@Lang.days</h6>
+                        <h3 id="days-display">1</h3>
+                    </div>
+                </div>
+                <div class="time-container">
+                    <div class="time-box">
+                        <h6>@Lang.hours</h6>
+                        <h3 id="hours-display">1</h3>
+                    </div>
+                </div>
+                <div class="time-container">
+                    <div class="time-box">
+                        <h6>@Lang.mins</h6>
+                        <h3 id="minutes-display">1</h3>
+                    </div>
+                </div>
+                <div class="time-container">
+                    <div class="time-box">
+                        <h6>@Lang.seconds</h6>
+                        <h3 id="seconds-display">1</h3>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    @*
+        <div id="container">
+        <div class="cover">
+        <div class="front">
+        <img src="https://zicxa.com/hinh-anh/wp-content/uploads/2019/09/T%E1%BB%95ng-h%E1%BB%A3p-h%C3%ACnh-%E1%BA%A3nh-nh%E1%BB%AFng-ng%C6%B0%E1%BB%9Di-c%C3%B3-r%C4%83ng-kh%E1%BB%83nh-d%E1%BB%85-th%C6%B0%C6%A1ng-nh%E1%BA%A5t-19.jpg">
+        </div>
+        <div class="back">
+        <img src="https://thuthuatnhanh.com/wp-content/uploads/2019/12/anh-girl-rang-khenh.jpg">
+        </div>
+        <div class="top">
+        <img src="https://giupban.com.vn/wp-content/uploads/2019/09/anh-hot-girl-lanh-lung-12.jpg">
+        </div>
+        <div class="bottom">
+        <img src="https://nhakhoachoban.vn/wp-content/uploads/2019/09/bi-mat-cua-chiec-rang-khenh-3-1.jpg">
+        </div>
+        <div class="left">
+        <img src="https://image.thanhnien.vn/660/uploaded/phunggiao/2018_12_03/misthy-2_layc.jpg">
+        </div>
+        <div class="right">
+        <img src="https://znews-photo.zadn.vn/w660/Uploaded/mdf_uswreo/2019_01_30/13.jpg">
+        </div>
+        </div>
+        </div>*@
+
+    @*    <div class="cards" style="display:inline-block; width:70%;">
+        <div class="flip-card">
+        <div class="flip-card-inner">
+        <div class="flip-card-front">
+        <div class="" style="    width: 80%;">
+        <div class="home-ad1-info">
+        <div class="row" style="margin: 0 1px;">
+        <div class="col-3 time-container">
+        <div class="time-box">
+        <h6>Days</h6>
+        <h4 id="days-display">1</h4>
+        </div>
+        </div>
+        <div class="col-3 time-container">
+        <div class="time-box">
+        <h6>Hours</h6>
+        <h4 id="hours-display">1</h4>
+        </div>
+        </div>
+        <div class="col-3 time-container">
+        <div class="time-box">
+        <h6>Mins</h6>
+        <h4 id="minutes-display">1</h4>
+        </div>
+        </div>
+        <div class="col-3 time-container">
+        <div class="time-box">
+        <h6>Secs</h6>
+        <h4 id="seconds-display">1</h4>
+        </div>
+        </div>
+        </div>
+        </div>
+        </div>
+        </div>
+        <div class="flip-card-back">
+        <div class="">
+        <div class="home-ad1-info" style="    width: 80%;">
+        <h5>
+        @Lang.have_chance_to_get
+        </h5>
+        <h4>
+        > 1.000.000 HTG
+        </h4>
+        </div>
+        </div>
+        </div>
+        </div>
+        </div>
+        </div>*@
+
+    <div class="home-ad1-button">
+        <button type="button" class="btn btn-outline-primary adv-button btn-block login-button-action buy-ticket-button"
+                onclick="navigatorClick('BuyTicket')" style="font-size: 12px;">
+            <i class="ft-unlock"></i> @Lang.buy_ticket.ToUpper()
+        </button>
+    </div>
+</div>
+
+
+
+<form class="form-horizontal" action="@ViewBag.MyConfig.MyValue/Home/BuyTicket" method="post">
+    @Html.AntiForgeryToken()
+</form>
+
+<script>
+    var a = document.querySelectorAll('.flip-box');
+    a = Array.prototype.slice.call(a);
+
+    var timings = {
+    //easing: 'ease-in-out',
+    iterations: Infinity,
+    direction: 'alternate',
+    fill: 'both'
+    }
+
+    a.forEach(function(el, i, ra) {
+    timings.delay = i * 5000;
+
+
+    timings.duration = 5000;
+    el.animate([
+    {transform: 'rotateX(180deg)', opacity: 0,},
+    {transform:'rotateX(-0deg)', opacity: 1,}
+    ], timings);
+
+    //timings.duration = 5000;
+    //el.animate([
+    //  {opacity: 1},
+    //  {opacity: 0}
+    //], timings);
+
+    timings.duration = 2000;
+
+    });
+</script>
+
+
+<script type="text/javascript">
+    if ( @Model.timeLeft <= 0) {
+        //var seconds = @Model.timeLeft,
+        //    $seconds = document.querySelector('#countdown');
+        //(function countdown() {
+        //    $seconds.textContent = seconds + ' s';
+        //    if (seconds-- > 0) setTimeout(countdown, 1000);
+        //    else {
+        //    }
+        //})();
+    } else {
+        var countDownDate = new Date('@Model.timeExpired').getTime();
+        var now = new Date('@Model.timeNow').getTime();
+
+        var now2 = new Date('Jan 5, 2021 15:37:25').getTime();
+        console.log("countDownDate: ", countDownDate);
+        console.log("now: ", now);
+        console.log("now2: ", now2);
+
+        // Update the count down every 1 second
+        var x = setInterval(function () {
+
+            // Get today's date and time
+            //var now1 = new Date().getTime();
+            //console.log("now1: ", now1);
+
+            //console.log("now2: ", now);
+            // Find the distance between now and the count down date
+            var distance = countDownDate - now;
+
+            // Time calculations for days, hours, minutes and seconds
+            var days = Math.floor(distance / (1000 * 60 * 60 * 24));
+            var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
+            var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
+            var seconds = Math.floor((distance % (1000 * 60)) / 1000);
+
+            // Display the result in the element with id="demo"
+            document.getElementById("days-display").innerHTML = days
+            document.getElementById("hours-display").innerHTML = hours
+            document.getElementById("minutes-display").innerHTML = minutes
+            document.getElementById("seconds-display").innerHTML = seconds
+
+            // If the count down is finished, write some text
+            if (distance < 0) {
+                clearInterval(x);
+                //document.getElementById("demo").innerHTML = "EXPIRED";
+            }
+            now += 1000;
+
+        }, 1000);
+        setTimeout("countdown()", 1000);
+    }
+</script>

+ 56 - 0
website/Views/Shared/Components/ChooseForm/ChooseForm.cshtml

@@ -0,0 +1,56 @@
+@*
+    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
+*@
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Components;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Common;
+
+@model ChooseFormModel
+
+@{
+}
+<div class="choose-form-container ticket-@Model.tics">
+
+    <div class="row">
+        <div class="col-3" style="text-align: center;">
+            <div class="left-items">
+                <img src="~/img/fill 2.png" onclick="autoFillTicket_Click('@Model.tics', '@Model.ticketType')" />
+                |
+                <img src="~/img/broom 2.png" onclick="cleanTicket_Click('@Model.tics')" />
+            </div>
+        </div>
+
+
+        <div class="col-6" style="text-align: center;">
+            <div class="center-items">
+                <h6>@Lang.choose_your_number</h6>
+            </div>
+        </div>
+
+        <div class="col-3"></div>
+
+    </div>
+
+    <div class="float-item" onclick="deleteTicket_Click('@Model.tics')">
+        <img src="~/img/Group 185.png" />
+    </div>
+
+    <style>
+        input {
+            font-size: 2em;
+        }
+
+            input:placeholder-shown {
+                font-size: 1em;
+            }
+    </style>
+    <div class="choose-number-box">
+        <input class="ticket-buy-number ticket-buy-number-@Model.tics" type="number"
+               placeholder="@(Model.ticketType == Constants.BOLET_CODE || Model.ticketType == Constants.BOULCHANS_CODE ? Lang.enter_digit_2 : Model.ticketType == Constants.MAYRAJ_CODE ? Lang.enter_digit_4 : Lang.enter_digit_3)"
+               value=""
+               oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);"
+               maxlength="@(Model.ticketType == Constants.BOLET_CODE || Model.ticketType == Constants.BOULCHANS_CODE ? 2 : Model.ticketType == Constants.MAYRAJ_CODE ? 4 : 3)" />
+    </div>
+</div>

+ 35 - 0
website/Views/Shared/Components/FooterOutside/FooterOutside.cshtml

@@ -0,0 +1,35 @@
+@*
+    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
+*@
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Components;
+
+@model FooterOutsideModel
+
+<div class="footer-container">
+    <div>
+        <img src="~/img/Group 83967.png" style="    max-height: 180px;"/>
+    </div>
+
+
+    <div class="footer-outside-bellow">
+        <div style="display: inline-block; padding: 10px 10px 0px 10px;" onclick="changeLanguageAction('fr')">
+            <img style="max-width:50px;" src="~/img/en_flag.png" />
+            <div style="margin-top:5px;">@Lang.english</div>
+        </div>
+
+        <div style="display: inline-block; padding: 10px 10px 0px 10px;" onclick="changeLanguageAction('en')">
+            <img style="max-width:50px;" src="~/img/Flag_of_Haiti.png" />
+            <div style="margin-top:5px;">@Lang.creole</div>
+        </div>
+
+        @*    <div class="text-center" style="margin-top:10px;">
+            <a><i class="fas fa-solid fa-users"></i> @Lang.skip_to_guest</a>
+            </div>*@
+
+    </div>
+</div>
+
+
+

+ 156 - 0
website/Views/Shared/Components/HeaderHome/HeaderHome.cshtml

@@ -0,0 +1,156 @@
+@*
+    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
+*@
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Components;
+@using LotteryWebApp.Extensions;
+
+@model HeaderHomeModel
+
+@*<style>
+    h1, h2, h3, h4, h5, h6 {
+    color: white;
+    }
+    </style>*@
+
+@*back ground*@
+
+<style>
+    .scroll-left {
+        height: 30px;
+        overflow: hidden;
+        position: relative;
+        background: #FF0404;
+        color: white;
+        border: 1px solid #FF8603;
+        border-radius: 20px;
+        margin-top: 5px;
+    }
+</style>
+
+@{
+    String topWinner = Context.Session.GetComplexData<String>("topWinner");
+}
+
+<div style="position:relative;">
+    <img class="header-img-main-retangle-above" src="~/img/Home_Layout1.2.png" />
+
+    <div class="header-img-ellipse-1">
+        <img src="~/img/header_above/Ellipse31.png" />
+    </div>
+
+    <div class="header-img-ellipse-2">
+        <img src="~/img/header_above/Ellipse36.png" />
+    </div>
+
+    <div class="header-img-ellipse-3">
+        <img src="~/img/header_above/Ellipse37.png" />
+    </div>
+
+    <div class="header-img-ellipse-4">
+        <img src="~/img/header_above/Ellipse38.png" />
+    </div>
+
+    <div class="account-header-container">
+        <div class="account-header-box" onclick="actionButton_Click('/Profile')">
+            <div class="account-header-image">
+                <img src="@(Model.profile.realPicture != null && Model.profile.realPicture != "" ? Model.profile.picture : "/img/8b6f5f94a53dbc3c8240347693830120.jpg")" />
+            </div>
+
+            <div class="account-header-info">
+                <div>
+                    <h3 style="color: white;">@Model.profile.fullName</h3>
+                </div>
+                <div>
+                    <h4 style="margin:0px;color: white;">@Model.profile.users.Substring(3)</h4>
+                </div>
+            </div>
+
+        </div>
+
+        <div class="row" style="margin-top:10px;">
+            <div class="col-6">
+                <div class="text-center text-color-white">
+                    <div class="open-or-close-eye" style="text-align:start;">
+                        <a class="open-eye hide">
+                            <i class="fa fa-solid fa-eye"></i>
+                            @string.Format("{0:#,0}", double.Parse(Model.userStatus.bet_coin)) HTG
+                        </a>
+                        <a class="close-eye">
+                            <i class="fa fa-solid fa-eye-slash"></i>
+                            <i style="font-size: 20px; vertical-align: middle;">******</i> HTG
+                        </a>
+                    </div>
+                </div>
+            </div>
+            <div class="col-6">
+                <div class="text-center text-color-white button-box-animation">
+                    @*<a href="@ViewBag.MyConfig.MyValue/Home/Transfer">*@
+                    <a onclick="navigatorClick('Home/Transfer')">
+                        <i class="fas fa-solid fa-comments-dollar"></i> @Lang.tranfer_win_money
+                    </a>
+                </div>
+            </div>
+        </div>
+
+    </div>
+
+</div>
+@*//<p>@topWinner</p>*@
+
+@*top winner*@
+<div>
+    @*    <div class="scroll-left">
+    <p>sdlkgjnolse gosr hjgosej rgosejg oshohaiol ghaghneoiaw gaowi hgaoihgiawhoegihawoeghawo egawo ghawo gaiowg awioegh awoieghaweio ga</p>
+    </div>*@
+    @{
+        if (topWinner != null)
+        {
+            <div class="scroll-left">
+                <marquee width="100%" style="line-height: 25px;">
+                    @topWinner
+                </marquee>
+            </div>
+
+        }
+    }
+</div>
+
+<div style="margin-top: 5px; position:relative;">
+    <img class="header-img-main-retangle" src="~/img/Home_Layout1.2.1.png" />
+
+    <div class="home-category-container">
+        <div class="row">
+            <div class="col-3 home-category-box category-noti-container button-box-animation" onclick="actionButton_Click('/BuyTicket')">
+                <img style="max-width:50px;" src="~/img/tickets-png 1.png" />
+                <div style="margin-top:5px;">@Lang.play</div>
+                <div class="category-noti">
+                    <img style=" max-width: 22px; height: 22px;" src="~/img/Trust shield_Icon.png" />
+                </div>
+            </div>
+
+            <div class="col-3 home-category-box button-box-animation" onclick="actionButton_Click('/Home/Rules')">
+                @*<img style="max-width:50px;" src="~/img/rules.png" />*@
+                <i class="fa fa-2x fa-solid fa-book" style="color:white;height: 35px;"></i>
+                <div style="margin-top:5px;">@Lang.rules</div>
+            </div>
+
+            <div class="col-3 home-category-box button-box-animation" onclick="actionButton_Click('/Home/Results')">
+                <img style="max-width:50px;" src="~/img/Result.png" />
+                <div style="margin-top:5px;">@Lang.results</div>
+            </div>
+
+            <div class="col-3 home-category-box button-box-animation" onclick="actionButton_Click('/Home/FAQ')">
+                <img style="max-width:50px;" src="~/img/faq.png" />
+                <div style="margin-top:5px;">@Lang.faq</div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<form id="action-redirect" action="" method="post">
+    @Html.AntiForgeryToken()
+</form>
+
+

+ 231 - 0
website/Views/Shared/Components/LotoNumber/LotoNumber.cshtml

@@ -0,0 +1,231 @@
+@*
+    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
+*@
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Components;
+@using LotteryWebApp.Common;
+@using System.Globalization;
+
+@model LotoNumberModel
+
+@{
+    string endDate = DateTime.ParseExact(Model.data.date_end, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy");
+    string endTime = DateTime.ParseExact(Model.data.date_end, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("HH:mm");
+    string drawnDate = DateTime.ParseExact(Model.data.date_random, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy");
+
+}
+
+<div class="loto-container">
+    <div class="row ">
+
+        <div class="col-3 loto-image" style="margin: auto;">
+            @{
+                if (Model.type == Constants.NEW_YORK_NUMBERS_CODE)
+                {
+                    <img class="image-w-80" src="~/img/lg-numbers 1.png" />
+                }
+                else if (Model.type == Constants.NEW_YORK_WIN4_CODE)
+                {
+                    <img class="image-w-80" src="~/img/lg-win4 1.png" />
+                }
+                else if (Model.type == Constants.NEW_YORK_BOLET_CODE)
+                {
+                    <img class="image-w-78" src="~/img/Group 83775.png" />
+                }
+                else if (Model.type == Constants.NEW_YORK_MAYRAJ_CODE)
+                {
+                    <img class="image-w-71" src="~/img/MARYAJ.png" />
+                }
+                else if (Model.type == Constants.NEW_YORK_LOTTO3_CODE)
+                {
+                    <img class="image-w-71" src="~/img/LOTTO3.png" />
+                }
+                else if (Model.type == Constants.FLORIDA_PICK3_CODE)
+                {
+                    <img class="image-w-80" src="~/img/Pick3Logo.png" />
+                }
+                else if (Model.type == Constants.FLORIDA_PICK4_CODE)
+                {
+                    <img class="image-w-80" src="~/img/Pick4Logo.png" />
+                }
+                else if (Model.type == Constants.FLORIDA_BOLET_CODE)
+                {
+                    <img class="image-w-78" src="~/img/Group 83775.png" />
+                }
+                else if (Model.type == Constants.FLORIDA_MAYRAJ_CODE)
+                {
+                    <img class="image-w-71" src="~/img/MARYAJ.png" />
+                }
+                else if (Model.type == Constants.FLORIDA_LOTTO3_CODE)
+                {
+                    <img class="image-w-71" src="~/img/LOTTO3.png" />
+                }
+                else if (Model.type == Constants.BOULCHANS_CODE)
+                {
+                    <div class="text-w-80-main-color">#@Model.data.id</div>
+                }
+            }
+        </div>
+        <div class="col-3 loto-date" style="margin: auto; padding:0px;">
+            @if (Model.type != Constants.BOULCHANS_CODE)
+            {
+                if (Model.data.isEvening == Constants.EVENING_CODE)
+                {
+                    <img style="width:20px;" src="~/img/moon-lg 7.png" />
+                }
+                else
+                {
+                    <img style="width:20px;" src="~/img/ico-sun 1.png" />
+                }
+            }
+            @if (Model.type == Constants.BOULCHANS_CODE)
+            {
+                <div class="text-main-color">@endDate</div>
+                <div class="text-main-color">@endTime</div>
+            }
+            else
+            {
+                <div>@drawnDate</div>
+            }
+        </div>
+        <div class="col-6 loto-number" style="margin: auto;    padding-left: 0px;">
+            <div class="scroll-item-container" style="@(Model.type == Constants.NEW_YORK_LOTTO3_CODE || Model.type == Constants.FLORIDA_LOTTO3_CODE ? "display: inline-block;vertical-align: middle;" : "")">
+
+                @{
+                    string[] number = new String[] { };
+                    if (Model.type == Constants.NEW_YORK_NUMBERS_CODE || Model.type == Constants.FLORIDA_PICK3_CODE)
+                    {
+                        number = Model.data.numberGame.Split(Model.data.split);
+                    }
+                    else if (Model.type == Constants.NEW_YORK_WIN4_CODE || Model.type == Constants.FLORIDA_PICK4_CODE)
+                    {
+                        number = Model.data.win4Game.Split(Model.data.split);
+                    }
+                    else if (Model.type == Constants.NEW_YORK_BOLET_CODE || Model.type == Constants.FLORIDA_BOLET_CODE)
+                    {
+                        number = Model.data.bolet.Split(Model.data.split);
+                    }
+                    else if (Model.type == Constants.NEW_YORK_MAYRAJ_CODE || Model.type == Constants.FLORIDA_MAYRAJ_CODE)
+                    {
+                        number = Model.data.mariaj.Split(Model.data.split);
+                    }
+                    else if (Model.type == Constants.NEW_YORK_LOTTO3_CODE || Model.type == Constants.FLORIDA_LOTTO3_CODE)
+                    {
+                        number = Model.data.lotto3.Split(Model.data.split);
+                    }
+                    else if (Model.type == Constants.BOULCHANS_CODE)
+                    {
+                        var myList = new List<string>();
+                        myList.Add(Model.data.result);
+                        var myArray = myList.ToArray();
+                        number = Model.data.result.Split("-");
+                    }
+                    for (int i = 0; i < number.Length; i++)
+                    {
+                        <div class="ball-container">
+                            @{
+                                if (Model.type == Constants.NEW_YORK_NUMBERS_CODE)
+                                {
+                                    <img class="image-w-35" src="~/img/Group 83766.png" />
+                                }
+                                else if (Model.type == Constants.NEW_YORK_WIN4_CODE)
+                                {
+                                    <img class="image-w-35" src="~/img/Group 83774.png" />
+                                }
+                                else if (Model.type == Constants.NEW_YORK_BOLET_CODE)
+                                {
+                                    <img class="image-w-35" src="~/img/Group 83776.png" />
+                                }
+                                else if (Model.type == Constants.NEW_YORK_MAYRAJ_CODE)
+                                {
+                                    <img class="image-w-35" src="~/img/Group 83779.png" />
+                                }
+                                else if (Model.type == Constants.NEW_YORK_LOTTO3_CODE)
+                                {
+                                    <img class="image-w-35" src="~/img/Group 83782.png" />
+                                }
+                                else if (Model.type == Constants.FLORIDA_PICK3_CODE)
+                                {
+                                    <img class="image-w-35" src="~/img/Group 83766.png" />
+                                }
+                                else if (Model.type == Constants.FLORIDA_PICK4_CODE)
+                                {
+                                    <img class="image-w-35" src="~/img/Group 83774.png" />
+                                }
+                                else if (Model.type == Constants.FLORIDA_BOLET_CODE)
+                                {
+                                    <img class="image-w-35" src="~/img/Group 83776.png" />
+                                }
+                                else if (Model.type == Constants.FLORIDA_MAYRAJ_CODE)
+                                {
+                                    <img class="image-w-35" src="~/img/Group 83779.png" />
+                                }
+                                else if (Model.type == Constants.FLORIDA_LOTTO3_CODE)
+                                {
+                                    <img class="image-w-35" src="~/img/Group 83782.png" />
+                                }
+                                else if (Model.type == Constants.BOULCHANS_CODE)
+                                {
+                                    if (i == 0)
+                                    {
+                                        <img class="image-w-35" src="~/img/Group 83774.png" />
+
+                                    }
+                                    else
+                                    {
+                                        <img class="image-w-35" src="~/img/Group 83782.png" />
+                                    }
+                                }
+                            }
+                            <div class="ball-number">
+                                @number[i]
+                            </div>
+                        </div>
+                    }
+                }
+                <div style="width:20px;">
+                </div>
+            </div>
+
+            @{
+                if (Model.type == Constants.FLORIDA_LOTTO3_CODE || Model.type == Constants.NEW_YORK_LOTTO3_CODE)
+                {
+                    //<i class="" style="color:red;display: inline-block;">* X from 0 to 9</i>
+                }
+            }
+        </div>
+    </div>
+    @{
+        if (Model.type == Constants.NEW_YORK_NUMBERS_CODE || Model.type == Constants.NEW_YORK_WIN4_CODE ||
+        Model.type == Constants.FLORIDA_PICK3_CODE || Model.type == Constants.FLORIDA_PICK4_CODE)
+        {
+        }
+        else
+        {
+            string ticketType = null;
+            if (Model.type == Constants.NEW_YORK_BOLET_CODE || Model.type == Constants.FLORIDA_BOLET_CODE)
+            {
+                ticketType = Constants.BOLET_CODE;
+            }
+            else if (Model.type == Constants.NEW_YORK_MAYRAJ_CODE || Model.type == Constants.FLORIDA_MAYRAJ_CODE)
+            {
+                ticketType = Constants.MAYRAJ_CODE;
+            }
+            else if (Model.type == Constants.NEW_YORK_LOTTO3_CODE || Model.type == Constants.FLORIDA_LOTTO3_CODE)
+            {
+                ticketType = Constants.LOTTO3_CODE;
+            }
+            else if (Model.type == Constants.BOULCHANS_CODE)
+            {
+                ticketType = Constants.BOULCHANS_CODE;
+            }
+            <div class="buy-container" onclick="actionButton_Click('/BuyTicket/Choose?termType=@Model.type&ticketType=@ticketType')">
+                <img src="~/img/Group.png" />
+            </div>
+        }
+    }
+
+</div>
+
+<hr class="line2">

+ 128 - 0
website/Views/Shared/Components/LotoNumberHistory/LotoNumberHistory.cshtml

@@ -0,0 +1,128 @@
+@*
+    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
+*@
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Components;
+@using LotteryWebApp.Common;
+
+@model LotoNumberHistoryModel
+
+<div>
+    <div class="loto-container">
+        <div class="row ">
+            <div class="col-4 loto-image" style="margin: auto;">
+                @*<img src="~/img/lg-numbers 1.png" style="margin:0 0;" />*@
+                @{
+                    if (Model.type == Constants.NEW_YORK_NUMBERS_CODE)
+                    {
+                        <img class="image-w-80" src="~/img/lg-numbers 1.png" />
+                    }
+                    else if (Model.type == Constants.NEW_YORK_WIN4_CODE)
+                    {
+                        <img class="image-w-80" src="~/img/lg-win4 1.png" />
+                    }
+                    else if (Model.type == Constants.NEW_YORK_BOLET_CODE)
+                    {
+                        <img class="image-w-78" src="~/img/Group 83775.png" />
+                    }
+                    else if (Model.type == Constants.NEW_YORK_MAYRAJ_CODE)
+                    {
+                        <img class="image-w-71" src="~/img/MARYAJ.png" />
+                    }
+                    else if (Model.type == Constants.NEW_YORK_LOTTO3_CODE)
+                    {
+                        <img class="image-w-71" src="~/img/LOTTO3.png" />
+                    }
+                    else if (Model.type == Constants.FLORIDA_PICK3_CODE)
+                    {
+                        <img class="image-w-80" src="~/img/Pick3Logo.png" />
+                    }
+                    else if (Model.type == Constants.FLORIDA_PICK4_CODE)
+                    {
+                        <img class="image-w-80" src="~/img/Pick4Logo.png" />
+                    }
+                    else if (Model.type == Constants.FLORIDA_BOLET_CODE)
+                    {
+                        <img class="image-w-78" src="~/img/Group 83775.png" />
+                    }
+                    else if (Model.type == Constants.FLORIDA_MAYRAJ_CODE)
+                    {
+                        <img class="image-w-71" src="~/img/MARYAJ.png" />
+                    }
+                    else if (Model.type == Constants.FLORIDA_LOTTO3_CODE)
+                    {
+                        <img class="image-w-71" src="~/img/LOTTO3.png" />
+                    }
+                    else if (Model.type == Constants.BOULCHANS_CODE)
+                    {
+                        <div class="text-w-80-main-color">#@Model.term.id</div>
+                    }
+                }
+            </div>
+            <div class="col-8 loto-number" style="margin: auto;    padding-left: 0px;">
+                <div class="scroll-item-container" style="    background-color: transparent;">
+
+                    @{
+                        for (int i = 0; i < Model.data.Length; i++)
+                        {
+                            <div class="ball-container">
+                                @{
+                                    if (Model.type == Constants.NEW_YORK_NUMBERS_CODE)
+                                    {
+                                        <img class="image-w-35" src="~/img/Group 83766.png" />
+                                    }
+                                    else if (Model.type == Constants.NEW_YORK_WIN4_CODE)
+                                    {
+                                        <img class="image-w-35" src="~/img/Group 83774.png" />
+                                    }
+                                    else if (Model.type == Constants.NEW_YORK_BOLET_CODE)
+                                    {
+                                        <img class="image-w-35" src="~/img/Group 83776.png" />
+                                    }
+                                    else if (Model.type == Constants.NEW_YORK_MAYRAJ_CODE)
+                                    {
+                                        <img class="image-w-35" src="~/img/Group 83779.png" />
+                                    }
+                                    else if (Model.type == Constants.NEW_YORK_LOTTO3_CODE)
+                                    {
+                                        <img class="image-w-35" src="~/img/Group 83782.png" />
+                                    }
+                                    else if (Model.type == Constants.FLORIDA_PICK3_CODE)
+                                    {
+                                        <img class="image-w-35" src="~/img/Group 83766.png" />
+                                    }
+                                    else if (Model.type == Constants.FLORIDA_PICK4_CODE)
+                                    {
+                                        <img class="image-w-35" src="~/img/Group 83774.png" />
+                                    }
+                                    else if (Model.type == Constants.FLORIDA_BOLET_CODE)
+                                    {
+                                        <img class="image-w-35" src="~/img/Group 83776.png" />
+                                    }
+                                    else if (Model.type == Constants.FLORIDA_MAYRAJ_CODE)
+                                    {
+                                        <img class="image-w-35" src="~/img/Group 83779.png" />
+                                    }
+                                    else if (Model.type == Constants.FLORIDA_LOTTO3_CODE)
+                                    {
+                                        <img class="image-w-35" src="~/img/Group 83782.png" />
+                                    }
+                                    else if (Model.type == Constants.BOULCHANS_CODE)
+                                    {
+                                        <img class="image-w-35" src="~/img/Group 83782.png" />
+                                    }
+                                }
+                                <div class="ball-number">
+                                    @Model.data[i]
+                                </div>
+                            </div>
+                        }
+                    }
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+

+ 57 - 0
website/Views/Shared/Components/PaymentForm/PaymentForm.cshtml

@@ -0,0 +1,57 @@
+@*
+    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
+*@
+
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Components;
+@using LotteryWebApp.Common;
+
+@model PaymentFormModel
+
+<div style="margin:10px 0;">
+    <div class="row">
+
+        <div class="col-7 loto-number" style="margin: auto;">
+            <div class="scroll-item-container">
+                <div class="ball-container">
+                    @{
+                        if (Model.ticketType == Constants.BOLET_CODE)
+                        {
+                            <img class="image-w-35" src="~/img/Group 83776.png" />
+                        }
+                        else if (Model.ticketType == Constants.MAYRAJ_CODE)
+                        {
+                            <img class="image-w-35" src="~/img/Group 83779.png" />
+                        }
+                        else if (Model.ticketType == Constants.LOTTO3_CODE)
+                        {
+                            <img class="image-w-35" src="~/img/Group 83782.png" />
+                        }
+                        else if (Model.ticketType == Constants.BOULCHANS_CODE)
+                        {
+                            <img class="image-w-35" src="~/img/Group 83782.png" />
+                        }
+                    }
+                    <div class="ball-number" style="">
+                        @Model.data
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <div class="col-5">
+            @*            <select name="ticket-money" class="form-control data-select-box ticket-money" style="text-align: center; border-radius: 5px;"
+                oldvalue="1">
+                <option value="1">1 HTG</option>
+                <option value="5">5 HTG</option>
+                <option value="10">10 HTG</option>
+                <option value="100">100 HTG</option>
+                </select>*@
+            <input name="ticket-money" class="form-control data-select-box ticket-money" style="text-align: center; border-radius: 5px;" type="number" value="" oldvalue="10" placeholder="@Lang.enter_amount1" />
+        </div>
+
+
+    </div>
+</div>
+

+ 48 - 0
website/Views/Shared/Components/ResultForm/ResultForm.cshtml

@@ -0,0 +1,48 @@
+@*
+    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
+*@
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Common;
+@using LotteryWebApp.Service;
+
+@model TermResultHistoryModel
+
+@{
+    for (int i = 0; i < Model.listTerm.Count; i++)
+    {
+        Term term = Model.listTerm[i];
+
+        <div class="row">
+            <div class="col-3" style="text-align:center;    padding-left: 25px;">
+                @{
+                    if(term.isEvening == Constants.AFTERNOON_CODE)
+                    {
+                        <img src="~/img/ico-sun 1.png" />
+                    }
+                    else
+                    {
+                        <img src="~/img/moon-lg 7.png" />
+                    }
+                }
+                <h6>@term.date_end</h6>
+            </div>
+
+            <div class="col-9">
+                <div>
+                    @{
+                        List<int> number = new List<int>();
+                        number.Add(1);
+                        number.Add(100);
+                        number.Add(145);
+                        number.Add(12);
+                    }
+                    @await Component.InvokeAsync("LotoNumberHistory", new {number= number})
+                </div>
+
+            </div>
+
+        </div>
+    }
+}
+

+ 38 - 0
website/Views/Shared/Components/SmallHeader/SmallHeader.cshtml

@@ -0,0 +1,38 @@
+@*
+    For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
+*@
+@{
+}
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Components;
+
+@model SmallHeaderModel
+
+<div class="small-header-container">
+    @{
+        if (Model.url == null)
+        {
+            <div class="backarrow-button-navigator" onclick="routeBackOnNull(); return 0;">
+                <a>
+                    <img class="backarrow-button-icon" src="~/img/icons8-back-50.png" />
+                </a>
+            </div>
+        }
+        else
+        {
+            <div class="backarrow-button-navigator" onclick="routeBack('@Model.url'); return 0;">
+                <a>
+                    <img class="backarrow-button-icon" src="~/img/icons8-back-50.png" />
+                </a>
+            </div>
+        }
+    }
+
+
+    <div class="title-app">
+        <h5 style="display: inline-block;">
+            @Model.title
+        </h5>
+    </div>
+</div>

+ 210 - 0
website/Views/Shared/Components/TicketForm/TicketForm.cshtml

@@ -0,0 +1,210 @@
+@*
+    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
+*@
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Components;
+@using LotteryWebApp.Common;
+@using LotteryWebApp.Service;
+@using System.Globalization;
+
+@model TicketFormModel
+@{
+    string ticketType = null;
+
+    string drawnDate = Lang.draw_date;
+    string dateEnd = Lang.draw_date;
+
+    if (Model.data != null && Model.data.Count > 0)
+    {
+        drawnDate = DateTime.ParseExact(Model.data[0].date_random, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy");
+        dateEnd = DateTime.ParseExact(Model.data[0].date_random, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy HH:mm");
+
+    }
+}
+<div style=" margin:10px 0;">
+    <div style="position:relative;">
+        <img class="header-img-buy-ticket-retangle-above" src="~/img/Rectangle 132.png" />
+
+        <div class="ticket-container">
+            <div class="row">
+                <div class="col-4 ticket-info">
+                    @{
+                        if (Model.type == Constants.NEW_YORK_BOLET_CODE || Model.type == Constants.FLORIDA_BOLET_CODE)
+                        {
+                            ticketType = Constants.BOLET_CODE;
+                            <img class="image-w-78" src="~/img/Group 83775.png" />
+                        }
+                        else if (Model.type == Constants.NEW_YORK_MAYRAJ_CODE || Model.type == Constants.FLORIDA_MAYRAJ_CODE)
+                        {
+                            ticketType = Constants.MAYRAJ_CODE;
+                            <img class="image-w-71" src="~/img/MARYAJ.png" />
+                        }
+                        else if (Model.type == Constants.NEW_YORK_LOTTO3_CODE || Model.type == Constants.FLORIDA_LOTTO3_CODE)
+                        {
+                            ticketType = Constants.LOTTO3_CODE;
+                            <img class="image-w-71" src="~/img/LOTTO3.png" />
+                        }
+                        else if (Model.type == Constants.BOULCHANS_CODE)
+                        {
+                            ticketType = Constants.BOULCHANS_CODE;
+                            //<img class="image-w-71" src="~/img/LOTTO3.png" />
+                            <div style="color: #DA5C5C;     font-weight: 900;">BOULCHANS</div>
+                        }
+                    }
+                    @{
+                        if (Model.type == Constants.BOULCHANS_CODE)
+                        {
+                            <h6>#@Model.data[0].id</h6>
+                        }
+                        else
+                        {
+                            <h6>@drawnDate</h6>
+                        }
+                    }
+                </div>
+                @{
+                    if (Model.type != Constants.BOULCHANS_CODE)
+                    {
+                        <div class="col-1">
+                            @{
+                                for (int i = 0; i < Model.data.Count; i++)
+                                {
+                                    if (Model.data[i].isEvening == Constants.AFTERNOON_CODE)
+                                    {
+                                        <div class="scroll-box-margin" style="height:50%;">
+                                            <img src="~/img/ico-sun 1.png" />
+                                        </div>
+                                    }
+                                    else
+                                    {
+                                        <div class="scroll-box-margin" style="height:50%;">
+                                            <img src="~/img/moon-lg 7.png" />
+                                        </div>
+                                    }
+                                }
+                            }
+                        </div>
+                    }
+                    else
+                    {
+                        <div class="col-3">
+                            <div class="row">
+                                <div class="col-2" style="padding: 0;">
+                                    <img style="    padding-top: 10px;" src="~/img/Arrow 29.png" />
+                                </div>
+                                <div class="col-7" style="padding: 0;">
+                                    <div class="text-main-color">
+                                        @dateEnd
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    }
+                }
+                <div class="@(Model.type != Constants.BOULCHANS_CODE ? "col-7" : "col-5") ticket-number" style="margin: auto;">
+                    @{
+
+                        for (int i = 0; i < Model.data.Count; i++)
+                        {
+                            Term term = Model.data[i];
+
+                            if (term.result == "" && term.status == "1")
+                            {
+                                <div class="loader2"></div>
+                                <div>@Lang.buying ...</div>
+                            }
+                            else if (term.result == "" && term.status == "2")
+                            {
+                                <div class="loader2"></div>
+                                <div>@Lang.waiting_for_result ...</div>
+                            }
+                            else
+                            {
+                                <div class="scroll-box-margin">
+                                    <div class="scroll-item-container">
+
+                                        @{
+                                            string[] listBall = new string[] { };
+
+                                            if (Model.type == Constants.NEW_YORK_BOLET_CODE || Model.type == Constants.FLORIDA_BOLET_CODE)
+                                            {
+                                                listBall = term.bolet.Split(term.split);
+                                            }
+                                            else if (Model.type == Constants.NEW_YORK_MAYRAJ_CODE || Model.type == Constants.FLORIDA_MAYRAJ_CODE)
+                                            {
+                                                listBall = term.mariaj.Split(term.split);
+                                            }
+                                            else if (Model.type == Constants.NEW_YORK_LOTTO3_CODE || Model.type == Constants.FLORIDA_LOTTO3_CODE)
+                                            {
+                                                listBall = term.lotto3.Split(term.split);
+                                            }
+                                            else if (Model.type == Constants.BOULCHANS_CODE)
+                                            {
+                                                var myList = new List<string>();
+                                                myList.Add(term.result);
+                                                var myArray = myList.ToArray();
+                                                listBall = term.result.Split("-");
+                                            }
+
+                                            for (int j = 0; j < listBall.Length; j++)
+                                            {
+                                                <div class="ball-container" style="margin: 0px 2px;">
+                                                    @{
+                                                        if (Model.type == Constants.NEW_YORK_BOLET_CODE || Model.type == Constants.FLORIDA_BOLET_CODE)
+                                                        {
+                                                            <img src="~/img/Group 83776.png" />
+                                                        }
+                                                        else if (Model.type == Constants.NEW_YORK_MAYRAJ_CODE || Model.type == Constants.FLORIDA_MAYRAJ_CODE)
+                                                        {
+                                                            <img src="~/img/Group 83779.png" />
+                                                        }
+                                                        else if (Model.type == Constants.NEW_YORK_LOTTO3_CODE || Model.type == Constants.FLORIDA_LOTTO3_CODE)
+                                                        {
+                                                            <img src="~/img/Group 83782.png" />
+                                                        }
+                                                        else if (Model.type == Constants.BOULCHANS_CODE)
+                                                        {
+                                                            if (j == 0)
+                                                            {
+                                                                <img src="~/img/Group 83774.png" />
+                                                            }
+                                                            else
+                                                            {
+                                                                <img src="~/img/Group 83782.png" />
+                                                            }
+                                                        }
+                                                    }
+                                                    <div class="ball-number">
+                                                        @listBall[j]
+                                                    </div>
+                                                </div>
+
+                                            }
+                                        }
+                                    </div>
+                                </div>
+                            }
+                        }
+                    }
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <div style="position:relative;    top: -8px;">
+        <img class="header-img-buy-ticket-retangle-above" src="~/img/Rectangle 133.png" />
+
+        <div class="ticket-below-container">
+            <div>
+                <button type="button" class="btn btn-outline-primary btn-block button-style-4"
+                        onclick="actionButton_Click('BuyTicket/Choose?ticketType=@ticketType')">
+                    <i class="ft-unlock"></i> @Lang.buy_ticket.ToUpper()
+                </button>
+            </div>
+
+        </div>
+    </div>
+
+</div>

+ 126 - 0
website/Views/Shared/Components/TicketHistory/TicketHistory.cshtml

@@ -0,0 +1,126 @@
+@*
+    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
+*@
+
+
+@using LotteryWebApp.Languages;
+@using LotteryWebApp.Controllers;
+@using LotteryWebApp.Components;
+@using System.Globalization;
+@using LotteryWebApp.Common;
+
+
+@model TicketHistoryModel
+
+@{
+
+    string drawnDate = DateTime.ParseExact(Model.data.termRandomDate, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy");
+    string drawnTime = DateTime.ParseExact(Model.data.termRandomDate, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("HH:mm");
+
+    string endDate = DateTime.ParseExact(Model.data.termEndDate, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy");
+    string endTime = DateTime.ParseExact(Model.data.termEndDate, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("HH:mm");
+
+}
+
+<div style=" margin:10px 0;">
+    <div style="position:relative;">
+        <img class="header-img-buy-ticket-retangle-above" src="~/img/Rectangle 132.png" />
+
+        <div class="ticket-container">
+            <div class="row">
+                <div class="col-4 ticket-info  history-ticket-box">
+                    @{
+                        if (Model.data.gameId == Constants.NEW_YORK_BOLET_CODE || Model.data.gameId == Constants.FLORIDA_BOLET_CODE)
+                        {
+                            <img class="image-w-78" src="~/img/Group 83775.png" />
+                        }
+                        else if (Model.data.gameId == Constants.NEW_YORK_MAYRAJ_CODE || Model.data.gameId == Constants.FLORIDA_MAYRAJ_CODE)
+                        {
+                            <img class="image-w-71" src="~/img/MARYAJ.png" />
+                        }
+                        else if (Model.data.gameId == Constants.NEW_YORK_LOTTO3_CODE || Model.data.gameId == Constants.FLORIDA_LOTTO3_CODE)
+                        {
+                            <img class="image-w-71" src="~/img/LOTTO3.png" />
+                        }
+                        else if (Model.data.gameId == Constants.BOULCHANS_CODE)
+                        {
+                        //<img class="image-w-71" src="~/img/LOTTO3.png" />
+                            <div style="color: #DA5C5C;     font-weight: 900;">BOULCHANS</div>
+                        }
+                    }
+                    <h6>@Lang.type: @BaseController.ConvertGameIdToTerm(Model.data.gameId) </h6>
+                </div>
+
+                <div class="col-4 history-ticket-box">
+                    @{
+                        string[] number = Model.data.code.Split("-");
+                    }
+                    <div class="ball-container">
+                        @{
+                            for (int i = 0; i < number.Count(); i++)
+                            {
+                                if (i == 0)
+                                {
+                                    <img src="~/img/Group 83766.png" />
+                                }
+                                else
+                                {
+                                    <img src="~/img/Group 83782.png" />
+                                }
+                                <div class="ball-number">
+                                    @Model.data.code
+                                </div>
+                            }
+                        }
+                    </div>
+
+                    <h6>@Lang.draw_date: </h6>
+                    @if (Model.data.gameId == Constants.BOULCHANS_CODE)
+                    {
+                        <h6>@endDate </h6>
+                    }
+                    else
+                    {
+                        <h6>@drawnDate </h6>
+                    }
+                </div>
+                <div class="col-4  history-ticket-box" style="margin: auto;">
+                    @{
+                        if (Model.winType == Constants.WIN_CODE)
+                        {
+                            <h5 class="text-bold" style="color:red;">@Model.data.moneyWin HTG</h5>
+                        }
+                        else
+                        {
+                            <h5 class="text-bold">@Model.data.money HTG</h5>
+                        }
+                    }
+                    <h6>@Lang.draw_time: </h6>
+                    @if (Model.data.gameId == Constants.BOULCHANS_CODE)
+                    {
+                        <h6>@endTime </h6>
+                    }
+                    else
+                    {
+                        <h6>@drawnTime </h6>
+                    }
+                </div>
+
+            </div>
+        </div>
+    </div>
+    <div style="position:relative;    top: -8px;">
+        <img class="header-img-buy-ticket-retangle-above" src="~/img/Rectangle 133.png" />
+
+        <div class="row history-ticket-detail-container">
+            <div class="col-6  button-box-animation" style="border-right:1px solid #ECEFF1;    margin-bottom: 10px;">
+                <h5 class="text-bold" onclick="detailTicketHistoryButton_CLick(@Model.data.id)">@Lang.details.ToUpper()</h5>
+            </div>
+            <div class="col-6">
+                <h5>@Lang.bill_order</h5>
+                <h5 class="text-bold">#@Model.data.billCode</h5>
+            </div>
+        </div>
+
+    </div>
+</div>

+ 25 - 0
website/Views/Shared/Error.cshtml

@@ -0,0 +1,25 @@
+@model ErrorViewModel
+@{
+    ViewData["Title"] = "Error";
+}
+
+<h1 class="text-danger">Error.</h1>
+<h2 class="text-danger">An error occurred while processing your request.</h2>
+
+@if (Model.ShowRequestId)
+{
+    <p>
+        <strong>Request ID:</strong> <code>@Model.RequestId</code>
+    </p>
+}
+
+<h3>Development Mode</h3>
+<p>
+    Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
+</p>
+<p>
+    <strong>The Development environment shouldn't be enabled for deployed applications.</strong>
+    It can result in displaying sensitive information from exceptions to end users.
+    For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
+    and restarting the app.
+</p>

+ 289 - 0
website/Views/Shared/_Layout.cshtml

@@ -0,0 +1,289 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi"/>
+    <title>@ViewData["Title"] - Natcom's Lottery</title>
+    @*<link rel="SHORTCUT ICON" href="/images/27172366.jpg" />*@
+    <link rel="stylesheet" href="@ViewBag.MyConfig.MyValue/lib/bootstrap/dist/css/bootstrap.min.css" />
+    <link rel="stylesheet" href="@ViewBag.MyConfig.MyValue/css/site.css" />
+    <script src="@ViewBag.MyConfig.MyValue/lib/jquery/dist/jquery.js" type="text/javascript"></script>
+    <script src="@ViewBag.MyConfig.MyValue/lib/jquery/dist/jquery.min.js" type="text/javascript"></script>
+
+
+    <!-- BEGIN: Vendor CSS-->
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/vendors/vendors.min.css">
+    <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/dt/dt-1.10.21/datatables.min.css" />
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/vendors/daterangepicker.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/vendors/bootstrap-datetimepicker.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/vendors/pickadate.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/daterange.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/vendors/climacons.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/fonts/meteocons-style.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/vendors/morris.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/bootstrap.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/bootstrap-extended.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/colors.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/components.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/horizontal-menu.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/palette-gradient.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/fonts/simple-line-icons-style.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/timeline.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/vendors/sweetalert.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/spin.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/main.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/model.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/style.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/app.style.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/common.style.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/arrow.style.css">
+
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/app.effect.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/loading.css">
+    @*<link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/wave.scss">*@
+
+    @*<link rel="stylesheet/less" type="text/css" href="@ViewBag.MyConfig.MyValue/css/tabs.style.scss">*@
+
+
+    @*<link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/pagination.css">*@
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/pagination.css">
+    @*<link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/main.css">*@
+
+    <link rel="stylesheet"
+          href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
+
+    <link href="@ViewBag.MyConfig.MyValue/icons/fontawesome-free-5.15.3-web/fontawesome-free-5.15.3-web/css/fontawesome.css" rel="stylesheet">
+    <link href="@ViewBag.MyConfig.MyValue/icons/fontawesome-free-5.15.3-web/fontawesome-free-5.15.3-web/css/brands.css" rel="stylesheet">
+    <link href="@ViewBag.MyConfig.MyValue/icons/fontawesome-free-5.15.3-web/fontawesome-free-5.15.3-web/css/solid.css" rel="stylesheet">
+
+    <script type='text/javascript' src="https://my.sendinblue.com/public/theme/version4/assets/js/dependencies/editor/ckeditor_3.6/ckeditor.js"></script>
+    <script type='text/javascript' src="https://my.sendinblue.com/public/theme/version4/assets/js/dependencies/editor/ckeditor_3.6/adapters/jquery.js"></script>
+    @*<script src="@ViewBag.MyConfig.MyValue/js/animation.js"></script>*@
+
+
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/vendors.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/jquery.sticky.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/jquery.sparkline.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/moment-with-locales.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/moment-timezone-with-data.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/bootstrap-datetimepicker.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/picker.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/picker.date.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/picker.time.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/legacy.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/daterangepicker.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/sweetalert.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/raphael-min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/morris.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/unslider-min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/horizontal-timeline.js"></script>
+
+
+    <script type="text/javascript" src="https://cdn.datatables.net/v/dt/dt-1.10.21/datatables.min.js"></script>
+
+    <!-- END: Page JS-->
+
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/jquery.sparkline.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/chart.min.js"></script>
+
+
+
+    <script src="@ViewBag.MyConfig.MyValue/lib/jquery/dist/jquery.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
+
+    <script src="@ViewBag.MyConfig.MyValue/js/runfirst.js"></script>
+
+
+
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
+    <script src="https://cdn.jsdelivr.net/npm/apexcharts"></script>
+
+    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css" />
+
+
+    @*    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
+        <link href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/2.0.1/css/toastr.css" rel="stylesheet" />
+        <script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/2.0.1/js/toastr.js"></script>*@
+
+    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css" />
+    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/function.js"></script>
+    <style>
+        * {
+            /*font-family: Montserrat !important;*/
+            /*font-size: 1.2rem;*/
+        }
+        .toast-message {
+            font-size: 20px;
+        }
+    </style>
+    <style>
+
+        @@font-face {
+            font-family: myFirstFont;
+            src: url(~/fonts/Inter-VariableFont_slnt,wght.ttf);
+        }
+
+        * {
+            font-family: myFirstFont;
+        }
+    </style>
+
+</head>
+
+@using Microsoft.AspNetCore.Hosting;
+@using Microsoft.AspNetCore.Http;
+@using Microsoft.AspNetCore.Mvc;
+@using Microsoft.Extensions.Configuration;
+@using LotteryWebApp.Extensions;
+@using LotteryWebApp.Common;
+@using LotteryWebApp.Languages;
+
+
+
+@{
+    String navigator = Context.Session.GetComplexData<String>("navigator");
+}
+
+<body class="horizontal-layout horizontal-menu 2-columns  " data-open="click" data-menu="horizontal-menu" data-col="2-columns" style="margin:0;">
+
+    @Html.AntiForgeryToken()
+
+    <input type="hidden" id="serviceName" value="" />
+    <input type="hidden" id="subDomain" value="@ViewBag.MyConfig.MyValue" />
+
+
+    @{
+        var serviceNameText = Context.Session.GetString("serviceName");
+        var permission = Context.Session.GetString("permission");
+
+        if (serviceNameText != null)
+        {
+            <script>
+                var thing = "@(serviceNameText)";
+                var newThing = JSON.parse(thing.replace(/&quot;/g, '"'));
+                $("#serviceName").val(newThing);
+            </script>
+        }
+    }
+
+    <div>
+        <div id="loading" class="hide">
+            <div id="loading-content">
+                <div class="loader"></div>
+            </div>
+        </div>
+    </div>
+
+
+    <script>
+
+    </script>
+
+    <!-- BEGIN: Content-->
+    <div class="all-screen" style="margin: 0 auto; position:relative; max-width:414px;">
+
+        <div class="float-button-navigator-back-to-app" onclick="routeBackToApp(); return 0;">
+            <a>
+                <img class="float-button-icon-back-to-app" src="~/img/icons8-multiply-50.png" />
+            </a>
+        </div>
+
+        <div class="navigator-footer-box">
+            <div class="navigator-footer-button @(navigator == Constants.HOME_NAVIGATOR ? "active" : "")"
+                 onclick="navigatorClick('Home'); return 0;">
+                <div>
+                    <i class="fas fa-home"></i>
+                </div>
+                <div>
+                    <a class="title-navigator">@Lang.home</a>
+                </div>
+            </div>
+            <div class="navigator-footer-button @(navigator == Constants.BUY_TICKET_NAVIGATOR ? "active" : "")"
+                 onclick="navigatorClick('BuyTicket'); return 0;">
+                <div>
+                    <i class="fas fa-solid fa-store"></i>
+                </div>
+                <div>
+                    <a class="title-navigator">@Lang.buy_ticket</a>
+                </div>
+            </div>
+            <div class="navigator-footer-button @(navigator == Constants.HISTORY_NAVIGATOR ? "active" : "")"
+                 onclick="navigatorClick('History'); return 0;">
+                <div>
+                    <i class="fas fa-chart-bar"></i>
+                </div>
+                <div>
+                    <a class="title-navigator">@Lang.history</a>
+                </div>
+            </div>
+            @*            <div class="navigator-footer-button @(navigator == Constants.CASH_AGENT_NAVIGATOR ? "active" : "")"
+                onclick="navigatorClick('CashAgent'); return 0;">
+                <div>
+                <i class="fas fa-light fa-money-bill"></i>
+                </div>
+                <div>
+                <a class="title-navigator">@Lang.cash_agent</a>
+                </div>
+                </div>*@
+            <div class="navigator-footer-button @(navigator == Constants.PROFILE_NAVIGATOR ? "active" : "")"
+                 onclick="navigatorClick('Profile'); return 0;">
+                <div>
+                    <i class="fas fa-user-alt"></i>
+                </div>
+                <div>
+                    <a class="title-navigator">@Lang.profile</a>
+                </div>
+            </div>
+        </div>
+        <div style="padding-bottom: 100px; background: white;">
+
+            @RenderBody()
+
+            <div class="modal fade" id="myContent" tabindex="-1" role="dialog" style=" top: 10%;"
+                 aria-labelledby="myModalLabel">
+                <div class="modal-dialog fault-dialog model-style content-model" style="">
+                    <div id='contentModel'>
+                    </div>
+                </div>
+            </div>
+
+            <div class="modal fade" id="myInform" tabindex="-1" role="dialog" style=" top: 10%;"
+                 aria-labelledby="myModalLabel">
+                <div class="modal-dialog fault-dialog model-style inform-model">
+                    <div id='informModel'>
+                    </div>
+                </div>
+            </div>
+
+        </div>
+    </div>
+
+
+    <!-- END: Content-->
+    <!-- END: Theme JS-->
+
+
+
+    <div class="sidenav-overlay"></div>
+    <div class="drag-target"></div>
+
+    <!-- BEGIN: Footer-->
+    @*<footer class="footer footer-static footer-light navbar-shadow" style="padding:0px;">
+
+        </footer>*@
+
+    <!-- END: Footer-->
+    <!-- BEGIN: Vendor JS-->
+    <script src="@ViewBag.MyConfig.MyValue/js/main.js"></script>
+
+    <script src="@ViewBag.MyConfig.MyValue/js/site.js" asp-append-version="true"></script>
+
+    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js"></script>
+
+    @RenderSection("Scripts", required: false)
+    <!-- END: Page JS-->
+</body>
+</html>
+
+

+ 186 - 0
website/Views/Shared/_NothingLayout.cshtml

@@ -0,0 +1,186 @@
+@{
+    Layout = null;
+}
+
+
+<!DOCTYPE html>
+<html class="loading" lang="en" data-textdirection="ltr">
+<!-- BEGIN: Head-->
+
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi">
+    @*<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimal-ui">*@
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    @*<meta name="viewport" content="width=800" />*@
+
+    <meta name="description" content="Stack admin is super flexible, powerful, clean &amp; modern responsive bootstrap 4 admin template with unlimited possibilities.">
+    <meta name="keywords" content="admin template, stack admin template, dashboard template, flat admin template, responsive admin template, web app">
+    <meta name="author" content="PIXINVENT">
+    <title>@ViewData["Title"] - Natcom's Lottery</title>
+    <link rel="apple-touch-icon" href="/Report/Content/admin-assets/images/ico/apple-icon-120.png">
+    <link rel="shortcut icon" type="image/x-icon" href="/Report/Content/admin-assets/images/ico/favicon.ico">
+    <link href="https://fonts.googleapis.com/css?family=Montserrat:300,300i,400,400i,500,500i%7COpen+Sans:300,300i,400,400i,600,600i,700,700i" rel="stylesheet">
+
+    <script src="@ViewBag.MyConfig.MyValue/lib/jquery/dist/jquery.js" type="text/javascript"></script>
+    <script src="@ViewBag.MyConfig.MyValue/lib/jquery/dist/jquery.min.js" type="text/javascript"></script>
+
+    <!-- BEGIN: Vendor CSS-->
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/vendors/vendors.min.css">
+    <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/dt/dt-1.10.21/datatables.min.css" />
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/vendors/daterangepicker.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/vendors/bootstrap-datetimepicker.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/vendors/pickadate.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/daterange.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/vendors/climacons.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/fonts/meteocons-style.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/vendors/morris.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/bootstrap.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/bootstrap-extended.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/colors.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/components.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/horizontal-menu.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/palette-gradient.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/fonts/simple-line-icons-style.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/timeline.min.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/vendors/sweetalert.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/spin.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/main.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/model.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/css/style.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/app.style.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/loading.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/common.style.css">
+    <link rel="stylesheet" type="text/css" href="@ViewBag.MyConfig.MyValue/css/flash.style.css">
+    @*<link rel="stylesheet" type="text/scss" href="@ViewBag.MyConfig.MyValue/css/wave.scss">*@
+    <link rel="stylesheet" href="@ViewBag.MyConfig.MyValue/css/wave.css" />
+
+    <link href="@ViewBag.MyConfig.MyValue/icons/fontawesome-free-5.15.3-web/fontawesome-free-5.15.3-web/css/fontawesome.css" rel="stylesheet">
+    <link href="@ViewBag.MyConfig.MyValue/icons/fontawesome-free-5.15.3-web/fontawesome-free-5.15.3-web/css/brands.css" rel="stylesheet">
+    <link href="@ViewBag.MyConfig.MyValue/icons/fontawesome-free-5.15.3-web/fontawesome-free-5.15.3-web/css/solid.css" rel="stylesheet">
+
+    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css" />
+    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js"></script>
+    <!-- END: Custom CSS-->
+    <script src="@ViewBag.MyConfig.MyValue/js/runfirst.js"></script>
+
+    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css" />
+    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/function.js"></script>
+
+    <style>
+
+        @@font-face {
+            font-family: myFirstFont !important;
+            src: url(~/fonts/Inter-VariableFont_slnt,wght.ttf);
+        }
+
+        * {
+            font-family: myFirstFont !important;
+        }
+    </style>
+
+
+</head>
+<!-- END: Head-->
+<!-- BEGIN: Body-->
+@*
+    <script>
+    $(window).resize(function() {
+    var mobileWidth =  (window.innerWidth > 0) ?
+    window.innerWidth :
+    screen.width;
+    var viewport = (mobileWidth > 360) ?
+    'width=device-width, initial-scale=1.0' :
+    'width=1200';
+    $("meta[name=viewport]").attr('content', viewport);
+    }).resize();
+    </script>*@
+
+<body class="horizontal-layout 1-column bg-full-screen-image blank-page blank-page pace-done menu-expanded vertical-layout vertical-overlay-menu"
+      data-open="hover" data-menu="horizontal-menu" data-col="1-columns" style="margin: 0;">
+    @Html.AntiForgeryToken()
+    <style>
+        body {
+            background: url(../../Content/admin-assets/images/backgrounds/bg-2.jpg) center center no-repeat fixed;
+            background-size: cover;
+        }
+    </style>
+
+    <input type="hidden" id="serviceName" value="" />
+    <input type="hidden" id="subDomain" value="@ViewBag.MyConfig.MyValue" />
+
+    <div>
+        <div id="loading" class="hide">
+            <div id="loading-content">
+                <div class="loader"></div>
+            </div>
+        </div>
+    </div>
+
+
+    <div class="float-button-navigator-back-to-app" onclick="routeBackToApp(); return 0;">
+        <a>
+            <img class="float-button-icon-back-to-app" src="~/img/icons8-multiply-50.png" />
+        </a>
+    </div>
+
+    <!-- BEGIN: Content-->
+    <div class="all-screen" style="margin: 0 auto; position:relative; max-width:414px;">
+        @RenderBody()
+    </div>
+
+    <div class="modal fade" id="myContent" tabindex="-1" role="dialog" style=" top: 10%;"
+         aria-labelledby="myModalLabel">
+        <div class="modal-dialog fault-dialog model-style content-model" style="">
+            <div id='contentModel'>
+            </div>
+        </div>
+    </div>
+
+    <div class="modal fade" id="myInform" tabindex="-1" role="dialog" style=" top: 10%;"
+         aria-labelledby="myModalLabel">
+        <div class="modal-dialog fault-dialog model-style inform-model">
+            <div id='informModel'>
+            </div>
+        </div>
+    </div>
+
+    <!-- END: Content-->
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/vendors.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/jquery.sticky.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/jquery.sparkline.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/moment-with-locales.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/moment-timezone-with-data.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/bootstrap-datetimepicker.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/picker.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/picker.date.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/picker.time.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/legacy.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/daterangepicker.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/sweetalert.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/raphael-min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/morris.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/unslider-min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/horizontal-timeline.js"></script>
+
+
+    <script type="text/javascript" src="https://cdn.datatables.net/v/dt/dt-1.10.21/datatables.min.js"></script>
+
+    <!-- END: Page JS-->
+
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/jquery.sparkline.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/vendors/chart.min.js"></script>
+
+    <script src="@ViewBag.MyConfig.MyValue/js/main.js"></script>
+    @*<script src="@ViewBag.MyConfig.MyValue/js/function.js"></script>*@
+
+
+    <script src="@ViewBag.MyConfig.MyValue/lib/jquery/dist/jquery.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
+    <script src="@ViewBag.MyConfig.MyValue/js/site.js" asp-append-version="true"></script>
+    @RenderSection("Scripts", required: false)
+</body>
+<!-- END: Body-->
+
+</html>

+ 2 - 0
website/Views/Shared/_ValidationScriptsPartial.cshtml

@@ -0,0 +1,2 @@
+<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
+<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>

+ 3 - 0
website/Views/_ViewImports.cshtml

@@ -0,0 +1,3 @@
+@using LotteryWebApp
+@using LotteryWebApp.Models
+@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

+ 3 - 0
website/Views/_ViewStart.cshtml

@@ -0,0 +1,3 @@
+@{
+    Layout = "_Layout";
+}

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác