public IActionResult Login(LoginViewModel loginViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View(loginViewModel));
            }
            IList <string> errors   = new List <string>();
            CustomerView   customer = loginPersistence.PersistLogin();

            if (customer == null)
            {
                if (EmailValidationService.IsValidEmail(loginViewModel.LoginInformation.Username))
                {
                    customer = eCommerce.GetCustomerBy(loginViewModel.LoginInformation.Username);
                    if (customer != null)
                    {
                        if (customer.Active)
                        {
                            string encryptedPassword = eCommerce.GetCustomerEncryptedPassword(int.Parse(customer.Id));
                            if (EncryptionService.Encrypt(loginViewModel.LoginInformation.Password) == encryptedPassword)
                            {
                                loginPersistence.LoginThrough(loginViewModel.LoginInformation.Username, loginViewModel.LoginInformation.Remember);
                            }
                            else
                            {
                                errors.Add("Wrong password");
                            }
                        }
                        else
                        {
                            errors.Add("Account was locked");
                        }
                    }
                    else
                    {
                        errors.Add("Email not found");
                    }
                }
                else
                {
                    errors.Add("Invalid email address");
                }
            }
            else
            {
                return(Redirect(loginViewModel.ReturnUrl));
            }

            if (errors.Any())
            {
                ViewData[GlobalViewBagKeys.Errors] = errors;
                return(View(loginViewModel));
            }
            return(Redirect(loginViewModel.ReturnUrl));
        }
        public CustomerView PersistLogin()
        {
            CustomerView customer;

            //check if session existed
            string sessionValue = session.GetString(customerSessionKeyWord);

            if (sessionValue != null)
            {
                customer = eCommerce.GetCustomerBy(int.Parse(sessionValue));
                if (customer != null)
                {
                    if (customer.Active)
                    {
                        return(customer);
                    }
                }
                session.Remove(customerSessionKeyWord);
                return(null);
            }

            LoginCookies loginCookies = requestCookies.GetJson <LoginCookies>(customerCookieKeyWord);

            if (loginCookies == null)
            {
                return(null);
            }

            customer = eCommerce.GetCustomerBy(loginCookies.UserId);
            if (customer == null)
            {
                responseCookies.Delete(customerCookieKeyWord);
                return(null);
            }

            if (!customer.Active)
            {
                responseCookies.Delete(customerCookieKeyWord);
                return(null);
            }

            string loginValue = EncryptionService.Encrypt(customer.Email +
                                                          eCommerce.GetCustomerEncryptedPassword(int.Parse(customer.Id)) +
                                                          connectionInfo.RemoteIpAddress.ToString());

            if (loginCookies.LoginValue != loginValue)
            {
                responseCookies.Delete(customerCookieKeyWord);
                return(null);
            }

            session.SetString(customerSessionKeyWord, customer.Id);
            return(customer);
        }
        #pragma warning disable 1998
        public async override global::System.Threading.Tasks.Task ExecuteAsync()
        {
            BeginContext(28, 2, true);
            WriteLiteral("\r\n");
            EndContext();
#line 3 "C:\Users\hando\Desktop\ECommerce\ECommerce.UI.AdminSite\Views\Customer\Order.cshtml"

            ECommerceService eCommerce = (ECommerceService)ViewData[GlobalViewBagKeys.ECommerceService];
            CustomerView     customer  = eCommerce.GetCustomerBy((int)Model.SearchModel.CustomerId);

#line default
#line hidden
            BeginContext(218, 20, true);
            WriteLiteral("<h1>Customer email: ");
            EndContext();
            BeginContext(239, 14, false);
#line 7 "C:\Users\hando\Desktop\ECommerce\ECommerce.UI.AdminSite\Views\Customer\Order.cshtml"
            Write(customer.Email);

#line default
#line hidden
            EndContext();
            BeginContext(253, 26, true);
            WriteLiteral("</h1>\r\n<h1>Customer name: ");
            EndContext();
            BeginContext(280, 74, false);
#line 8 "C:\Users\hando\Desktop\ECommerce\ECommerce.UI.AdminSite\Views\Customer\Order.cshtml"
            Write(FullName.Write(customer.FirstName, customer.MiddleName, customer.LastName));

#line default
#line hidden
            EndContext();
            BeginContext(354, 9, true);
            WriteLiteral("</h1>\r\n\r\n");
            EndContext();
            BeginContext(364, 45, false);
#line 10 "C:\Users\hando\Desktop\ECommerce\ECommerce.UI.AdminSite\Views\Customer\Order.cshtml"
            Write(Html.DisplayFor(m => m.Orders, "OrdersTable"));

#line default
#line hidden
            EndContext();
            BeginContext(409, 4, true);
            WriteLiteral("\r\n\r\n");
            EndContext();
            BeginContext(413, 287, false);
            __tagHelperExecutionContext = __tagHelperScopeManager.Begin("div", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "b523f79d64e6b5c75675bbcfc87df665223a08247986", async() => {
                BeginContext(692, 2, true);
                WriteLiteral("\r\n");
                EndContext();
            }
                                                                        );
            __ECommerce_UI_AdminSite_Infrastructure_PageLinkTagHelper = CreateTagHelper <global::ECommerce.UI.AdminSite.Infrastructure.PageLinkTagHelper>();
            __tagHelperExecutionContext.Add(__ECommerce_UI_AdminSite_Infrastructure_PageLinkTagHelper);
#line 12 "C:\Users\hando\Desktop\ECommerce\ECommerce.UI.AdminSite\Views\Customer\Order.cshtml"
            __ECommerce_UI_AdminSite_Infrastructure_PageLinkTagHelper.PageModel = Model.PagingInfo;

#line default
#line hidden
            __tagHelperExecutionContext.AddTagHelperAttribute("page-model", __ECommerce_UI_AdminSite_Infrastructure_PageLinkTagHelper.PageModel, global::Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.DoubleQuotes);
            BeginWriteTagHelperAttribute();
#line 12 "C:\Users\hando\Desktop\ECommerce\ECommerce.UI.AdminSite\Views\Customer\Order.cshtml"
            WriteLiteral(ViewContext.RouteData.Values["Action"].ToString());

#line default
#line hidden
            __tagHelperStringValueBuffer = EndWriteTagHelperAttribute();
            __ECommerce_UI_AdminSite_Infrastructure_PageLinkTagHelper.PageAction = __tagHelperStringValueBuffer;
            __tagHelperExecutionContext.AddTagHelperAttribute("page-action", __ECommerce_UI_AdminSite_Infrastructure_PageLinkTagHelper.PageAction, global::Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.DoubleQuotes);
            __tagHelperExecutionContext.AddHtmlAttribute(__tagHelperAttribute_0);
            __ECommerce_UI_AdminSite_Infrastructure_PageLinkTagHelper.PageClass = (string)__tagHelperAttribute_1.Value;
            __tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_1);
            __ECommerce_UI_AdminSite_Infrastructure_PageLinkTagHelper.PageClassNormal = (string)__tagHelperAttribute_2.Value;
            __tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_2);
            __ECommerce_UI_AdminSite_Infrastructure_PageLinkTagHelper.PageClassSelected = (string)__tagHelperAttribute_3.Value;
            __tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_3);
            __ECommerce_UI_AdminSite_Infrastructure_PageLinkTagHelper.PageClassDisabled = (string)__tagHelperAttribute_4.Value;
            __tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_4);
            if (__ECommerce_UI_AdminSite_Infrastructure_PageLinkTagHelper.PageUrlValues == null)
            {
                throw new InvalidOperationException(InvalidTagHelperIndexerAssignment("page-url-customerId", "ECommerce.UI.AdminSite.Infrastructure.PageLinkTagHelper", "PageUrlValues"));
            }
#line 15 "C:\Users\hando\Desktop\ECommerce\ECommerce.UI.AdminSite\Views\Customer\Order.cshtml"
            __ECommerce_UI_AdminSite_Infrastructure_PageLinkTagHelper.PageUrlValues["customerId"] = Model.SearchModel.CustomerId;

#line default
#line hidden
            __tagHelperExecutionContext.AddTagHelperAttribute("page-url-customerId", __ECommerce_UI_AdminSite_Infrastructure_PageLinkTagHelper.PageUrlValues["customerId"], global::Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.DoubleQuotes);
            await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);

            if (!__tagHelperExecutionContext.Output.IsContentModified)
            {
                await __tagHelperExecutionContext.SetOutputContentAsync();
            }
            Write(__tagHelperExecutionContext.Output);
            __tagHelperExecutionContext = __tagHelperScopeManager.End();
            EndContext();
        }