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

                if (LicenseValid)
                {
                    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
                        };

                        var newStoreAddedResult = await StoreDataStore.AddItemAsync(newStore);

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

                        if (newStoreAddedResult)
                        {
                            return(RedirectToAction("HomeStore", new { StoreId = newStore.StoreId }));
                        }
                        else
                        {
                            return(View());
                        }
                    }
                    else
                    {
                        return(View());
                    }
                }
                else
                {
                    ViewBag.LicenseError = "License is not valid.";
                    return(View());
                }
            }
            else
            {
                return(View());
            }
        }
Example #2
0
        public async Task <IActionResult> UserRegistration(UserViewModel userVm)
        {
            if (UserInfoNotNullOrEmpty(userVm))
            {
                if (userVm.Password == userVm.ConfirmPassword)
                {
                    var credentialExist = await userDataStore.CheckIfUsernameAndPasswordExist(userVm.Username, userVm.Password);

                    if (!credentialExist)
                    {
                        //Las credenciales de entrada del usuario
                        var userLogin = new Login()
                        {
                            LoginId  = Guid.NewGuid(),
                            Password = userVm.Password,
                            Username = userVm.Username
                        };

                        //Creamos el usuario
                        var newUser = new User()
                        {
                            UserId    = Guid.NewGuid(),
                            Email     = userVm.Email,
                            LoginId   = userLogin.LoginId,
                            Name      = userVm.Name,
                            UserLogin = userLogin,
                            Address   = userVm.Address
                        };


                        //Obtenemos datos de empleados necesarios para el registro en stripe
                        var optionsCustomers = new UserDTO
                        {
                            Name    = userVm.Name,
                            Email   = userVm.Email,
                            Phone   = userVm.Phone,
                            Address = userVm.Address,
                        };


                        //Creamos un nuevo usuario en stripe
                        var customerToken = await StripeServiceDS.CreateStripeCustomer(optionsCustomers);

                        //Le  insertamos la tarjeta al nuevo usuario de stripe
                        var cardservicetokenId = await StripeServiceDS.InsertStripeCardToCustomer(PaymentCard, customerToken);

                        //Creamos la subcripcion al usuario

                        var subcriptiontoken = await StripeServiceDS.CreateACustomerSubcription(customerToken);

                        //Verificamos que la informacion este correcta

                        if (!string.IsNullOrEmpty(subcriptiontoken))
                        {
                            //Le damos el id del nuevo customer de la cuenta de stripe.
                            newUser.StripeUserId = customerToken;



                            //Lo agregamos a la base de datos.
                            var addedUser = await userDataStore.AddItemAsync(newUser);

                            //Verificamos si el usuario se inserto a nuestra base de datos
                            if (addedUser)
                            {
                                //Verificamos si el token de la tarjeta insertada es correcta.
                                if (!string.IsNullOrEmpty(cardservicetokenId))
                                {
                                    //Agregamos la tarjeta a nuestra base de datos.
                                    var cardadded = cardDataStore.AddItemAsync(new PaymentCard()
                                    {
                                        UserId        = newUser.UserId,
                                        StripeCardId  = cardservicetokenId,
                                        CardNumber    = PaymentCard.CardNumber,
                                        Cvc           = PaymentCard.Cvc,
                                        Month         = PaymentCard.Month,
                                        Year          = PaymentCard.Year,
                                        HolderName    = PaymentCard.HolderName,
                                        PaymentCardId = Guid.NewGuid()
                                    });
                                }

                                //Creamos el lincense
                                var newStoreLicense = new StoreLicense()
                                {
                                    LicenseId           = Guid.NewGuid(),
                                    StartDate           = DateTime.Today,
                                    LicenseHolderUserId = newUser.UserId
                                };

                                //Lo insertamos a nuestra base de datos
                                var storelicenceresult = await storeLicenseDataStore.AddItemAsync(newStoreLicense);

                                //Verificamos el resultado
                                if (storelicenceresult)
                                {
                                    var subcription = new Subcription()
                                    {
                                        IsDisable           = false,
                                        StripeCustomerId    = customerToken,
                                        StripeSubCriptionID = subcriptiontoken,
                                        StoreLicense        = newStoreLicense.LicenseId
                                    };

                                    var result = SubcriptionDataStore.AddItemAsync(subcription);

                                    //Enviamos el email con el codio de la nueva licensia.
                                    SendStoreLicenceEmailCode(newUser.Email, newStoreLicense.LicenseId.ToString());
                                }
                                //Verificamos que los credenciales esten correctos.
                                var resultCredentials = userDataStore.CheckUserCredential(userLogin.Username, userLogin.Password);

                                //Validamos que el resultado no sea vacio
                                if (resultCredentials != null)
                                {
                                    //Le damos los credenciales al LogUser
                                    LogUser.LoginUser = resultCredentials;
                                }

                                //Luego de todo completado de manera correcta nos vamos a registrar una tienda.
                                return(RedirectToAction("RegisterStore", "Store"));
                            }
                        }
                        else
                        {
                            return(View());
                        }
                    }
                    else
                    {
                        ViewBag.ErrorMsg = "The creditals already exists.";
                        return(View());
                    }
                }
                else
                {
                    ViewBag.ErrorMsg = "The password and confirm pasword are different.";
                    return(View());
                }
            }


            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());
            }
        }