public async Task <IActionResult> RegisterStore(RegisterStoreViewModel registerStoreViewModel)
        {
            if (!(registerStoreViewModel.StoreLicence == Guid.Empty))
            {
                var LicenseValid = storeLicenseDataStore.StoreLicenseExists(registerStoreViewModel.StoreLicence);

                if (LicenseValid)
                {
                    var licenseIsInUsed = await storeLicenseDataStore.IsLicenseInUsed(registerStoreViewModel.StoreLicence.ToString());

                    if (!licenseIsInUsed)
                    {
                        if (registerStoreViewModel.File != null)
                        {
                            var ImgToBty     = ConvertToBytes(registerStoreViewModel.File);
                            var StoreId      = Guid.NewGuid();
                            var listWorkHour = new List <WorkHour>();

                            var MondayWH = new WorkHour()
                            {
                                WorkHourId = Guid.NewGuid(),
                                Day        = DayOfWeek.Monday.ToString(),
                                OpenTime   = registerStoreViewModel.MOpenTime,
                                CloseTime  = registerStoreViewModel.MCloseTime
                            };
                            var TuesdayWH = new WorkHour()
                            {
                                WorkHourId = Guid.NewGuid(),
                                Day        = DayOfWeek.Tuesday.ToString(),
                                OpenTime   = registerStoreViewModel.TOpenTime,
                                CloseTime  = registerStoreViewModel.TCloseTime
                            };
                            var WednesdayWH = new WorkHour()
                            {
                                WorkHourId = Guid.NewGuid(),
                                Day        = DayOfWeek.Wednesday.ToString(),
                                OpenTime   = registerStoreViewModel.WOpenTime,
                                CloseTime  = registerStoreViewModel.WCloseTime
                            };
                            var ThuerdayWH = new WorkHour()
                            {
                                WorkHourId = Guid.NewGuid(),
                                Day        = DayOfWeek.Thursday.ToString(),
                                OpenTime   = registerStoreViewModel.ThOpenTime,
                                CloseTime  = registerStoreViewModel.ThCloseTime
                            };
                            var FridayWH = new WorkHour()
                            {
                                WorkHourId = Guid.NewGuid(),
                                Day        = DayOfWeek.Friday.ToString(),
                                OpenTime   = registerStoreViewModel.FOpenTime,
                                CloseTime  = registerStoreViewModel.FCloseTime
                            };
                            var SaturdayWH = new WorkHour()
                            {
                                WorkHourId = Guid.NewGuid(),
                                Day        = DayOfWeek.Saturday.ToString(),
                                OpenTime   = registerStoreViewModel.SOpenTime,
                                CloseTime  = registerStoreViewModel.SCloseTime
                            };
                            var SundayWH = new WorkHour()
                            {
                                WorkHourId = Guid.NewGuid(),
                                Day        = DayOfWeek.Sunday.ToString(),
                                OpenTime   = registerStoreViewModel.SuOpenTime,
                                CloseTime  = registerStoreViewModel.SuCloseTime
                            };

                            listWorkHour.Add(MondayWH);
                            listWorkHour.Add(TuesdayWH);
                            listWorkHour.Add(WednesdayWH);
                            listWorkHour.Add(ThuerdayWH);
                            listWorkHour.Add(FridayWH);
                            listWorkHour.Add(SaturdayWH);
                            listWorkHour.Add(SundayWH);

                            var newStore = new Store()
                            {
                                StoreId = StoreId,
                                /////////////////////////CHANGE Dev///////////////////////
                                StoreName              = registerStoreViewModel.StoreName,
                                WorkHours              = listWorkHour,
                                StoreImage             = ImgToBty,
                                StoreRegisterLicenseId = registerStoreViewModel.StoreLicence,
                                UserId           = LogUser.LoginUser.UserId,
                                StoreType        = registerStoreViewModel.SelectedStoreType,
                                StoreDescription = registerStoreViewModel.StoreDescription,
                                SKKey            = registerStoreViewModel.StripeSecretKey,
                                PBKey            = registerStoreViewModel.StripePublicKey,
                                StoreLicenceId   = registerStoreViewModel.StoreLicence
                            };

                            var newStoreAddedResult = await StoreDataStore.AddItemAsync(newStore);

                            var result = userDataStore.CheckUserCredential(LogUser.LoginUser.UserLogin.Username, LogUser.LoginUser.UserLogin.Password);

                            LogUser.LoginUser = result;

                            LogUser.LoginUser.Stores = LogUser.LoginUser.Stores.Where(s => s.IsDisable == false).ToList();

                            if (LogUser.Token == null)
                            {
                                LogUser.UsersConnected = new UsersConnected()
                                {
                                    HubConnectionID = LogUser.ComunicationService.hubConnection.ConnectionId,
                                    UserID          = result.UserId
                                };

                                var hub_connection_result = await userConnectedDataStore.AddItemAsync(LogUser.UsersConnected);

                                LogUser.Token = userDataStore.LoginCredential(LogUser.LoginUser.UserLogin.Username, LogUser.LoginUser.UserLogin.Password);
                            }

                            if (newStoreAddedResult)
                            {
                                var licenseUpdated = await storeLicenseDataStore.UpdateLicenceInCode(registerStoreViewModel.StoreLicence);

                                if (licenseUpdated)
                                {
                                    return(RedirectToAction("HomeStore", new { StoreId = newStore.StoreId }));
                                }
                                else
                                {
                                    return(View());
                                }
                            }
                            else
                            {
                                return(View());
                            }
                        }
                        else
                        {
                            return(View());
                        }
                    }
                    else
                    {
                        ViewBag.LicenseError = "License is in used.";
                        return(View());
                    }
                }
                else
                {
                    ViewBag.LicenseError = "License is not valid.";
                    return(View());
                }
            }
            else
            {
                return(View());
            }
        }
        //Sign In Action
        public async Task <IActionResult> Index(LoginViewModel loginViewModel)
        {
            if (LoginInfoNotNullOrEmpty(loginViewModel))
            {
                var result = userDataStore.CheckUserCredential(loginViewModel.Username, loginViewModel.Password);

                LogUser.Token = userDataStore.LoginCredential(loginViewModel.Username, loginViewModel.Password);

                if (result != null)
                {
                    LogUser.ComunicationService = new ComunicationService();


                    Task.Run(async() =>
                    {
                        await LogUser.ComunicationService.Connect();
                    }).Wait();

                    LogUser.LoginUser = result;


                    LogUser.UsersConnected = new UsersConnected()
                    {
                        HubConnectionID = LogUser.ComunicationService.hubConnection.ConnectionId,
                        UserID          = result.UserId,
                        IsDisable       = false,
                        ConnecteDate    = DateTime.Now
                    };


                    bool isConnectionWasModify = await userConnectedDataStore.ModifyOldConnections(LogUser.UsersConnected);

                    var hub_connection_result = await userConnectedDataStore.AddItemAsync(LogUser.UsersConnected);


                    var stores = new List <Store>(result.Stores.Where(s => s.IsDisable == false));


                    LogUser.LoginUser.Stores = stores;
                    if (stores.Count() > 0)
                    {
                        SelectedStore.CurrentStore = stores[0];
                    }
                    else
                    {
                        return(RedirectToAction("RegisterControl", "Store"));
                    }

                    return(RedirectToAction("HomeStore", "Store", new { StoreId = SelectedStore.CurrentStore.StoreId }));
                }
                else
                {
                    ViewBag.ErrorMsg = "Error";
                    return(View());
                }
            }
            else
            {
                return(View());
            }
        }