コード例 #1
0
        private static void ReturnImage(HttpContext context, string imageNameQuery)
        {
            if (!string.IsNullOrWhiteSpace(imageNameQuery))
            {
                using (var db = new AvensiaWebshopEntities())
                {
                    var imageQuery = db.ProductPhoto.FirstOrDefault(i => i.LargePhotoFileName == imageNameQuery);

                    if (imageQuery == null)
                    {
                        Return404(context);
                        return;
                    }

                    context.Response.ContentType = "image/gif";
                    Stream strm = new MemoryStream(imageQuery.LargePhoto);
                    byte[] buffer = new byte[4096];
                    int byteSeq = strm.Read(buffer, 0, 4096);

                    while (byteSeq > 0)
                    {
                        context.Response.OutputStream.Write(buffer, 0, byteSeq);
                        byteSeq = strm.Read(buffer, 0, 4096);
                    }
                }
            }
        }
コード例 #2
0
        private static void ReturnTumbNail(HttpContext context, string thumbNailProductIDQuery)
        {
            int productID;

            if (!string.IsNullOrWhiteSpace(thumbNailProductIDQuery) && int.TryParse(thumbNailProductIDQuery, out productID))
            {
                using (var db = new AvensiaWebshopEntities())
                {
                    var imageQuery = db.Product.FirstOrDefault(p => p.ProductID == productID);

                    if (imageQuery == null)
                    {
                        Return404(context);
                        return;
                    }

                    context.Response.ContentType = "image/gif";
                    Stream strm = new MemoryStream(imageQuery.ThumbNailPhoto);
                    byte[] buffer = new byte[4096];
                    int byteSeq = strm.Read(buffer, 0, 4096);

                    while (byteSeq > 0)
                    {
                        context.Response.OutputStream.Write(buffer, 0, byteSeq);
                        byteSeq = strm.Read(buffer, 0, 4096);
                    }
                }
            }
        }
コード例 #3
0
        private void FillShopingCart()
        {
            using (var db = new AvensiaWebshopEntities())
            {
                var shopingCart = (ShopingCart)Session[WebShopController.SessionKeyShopingCart] ?? new ShopingCart();

                WebShopController.UppdateMiniCart(this, shopingCart);
            }
        }
コード例 #4
0
        private void PopulateMenu()
        {
            using (var db = new AvensiaWebshopEntities())
            {
                var categoryQuery = db.ProductCategory.Where(p => p.ParentProductCategoryID == null);

                repNavigation.DataSource = categoryQuery.ToList();
                repNavigation.DataBind();
            }
        }
コード例 #5
0
 protected void BannerTwoAnnons(int kampanjId)
 {
     using (var db = new AvensiaWebshopEntities())
     {
         //Random random = new Random();
         //var selectedCampID = random.Next(1, 5);
         var selectedCamp = db.Kampanj.FirstOrDefault(k => k.KampanjID == kampanjId);
         Campaign_2.ImageUrl = "~/Images/Annonser/" + selectedCamp.KampanjImageName;
         Campaign_2.NavigateUrl = selectedCamp.KampanjURL;
     }
 }
コード例 #6
0
        private void FillOrderConfirm()
        {
            int orderId = -1;

            var lastOrderIDObject = Session["LastOrderID"];

            if (lastOrderIDObject != null)
            {
                orderId = int.Parse(lastOrderIDObject.ToString());
            }

            else if (lastOrderIDObject == null || orderId == -1)
            {
                Response.Redirect("/Hem.aspx");
            }

            using (var db = new AvensiaWebshopEntities())
            {
                var orderQuerry = db.SalesOrderHeader.SingleOrDefault(o => o.SalesOrderID == orderId);

                repProductList.DataSource = orderQuerry.SalesOrderDetail;
                repProductList.DataBind();

                ltFreigtLabel.Text = $"{orderQuerry.ShipMethod} Shipping";
                ltFreightPrice.Text = $"{orderQuerry.Freight:N2}";

                ltTax.Text = $"{orderQuerry.TaxAmt:N2}";

                name.Text = $"{orderQuerry.Customer.FirstName} {orderQuerry.Customer.LastName}";

                var addressQuery = db.Address.FirstOrDefault(a => a.AddressID == orderQuerry.ShipToAddressID);

                if (addressQuery.AddressLine2 == "")
                {
                    adress.Text =
                       $"{addressQuery.AddressLine1} <br/> {addressQuery.City} <br/> {addressQuery.PostalCode}";
                }
                else
                {
                    adress.Text =
                        $"{addressQuery.AddressLine1} <br/> C/o {addressQuery.AddressLine2} <br/> {addressQuery.City} <br/> {addressQuery.PostalCode}";

                }

                pris.Text = $"&nbsp&nbsp&nbsp{orderQuerry.TotalDue:N2} kr";

                legendText.Text = $"order id: <span>{orderId}</span>";

                var customerQuery = db.Customer.FirstOrDefault(c => c.CustomerID == orderQuerry.CustomerID);
                mail.Text = $"{customerQuery.EmailAddress}";

                SendComfirmationMail(orderQuerry, orderQuerry.Customer);
            }
        }
コード例 #7
0
 protected void GetCampaigns(int numberOfCampaigns)
 {
     var campaignsList = new List<Kampanj>();
     using (var db = new AvensiaWebshopEntities())
     {
         campaignsList = db.Kampanj.Where(c => c.KampanjStatus == "active").ToList();
         if (campaignsList.Count > numberOfCampaigns)
         {
             int numberToRemove = campaignsList.Count - numberOfCampaigns;
             campaignsList.RemoveRange(numberOfCampaigns, numberToRemove);
         }
         
     }
     repCampaign.DataSource = campaignsList;
     repCampaign.DataBind();
 }
コード例 #8
0
        private bool GetActiveUser(out Customer customer)
        {
            var activeUserID = Session[WebShopController.SessionKeyActiveUserID];
            customer = null;

            if (activeUserID != null)
            {
                using (var db = new AvensiaWebshopEntities())
                {
                    customer = db.Customer.FirstOrDefault(c => c.CustomerID == (int)activeUserID);

                    return customer != null;
                }
            }

            return false;
        }
コード例 #9
0
        protected void btnLogIn_Click(object sender, EventArgs e)
        {
            using (var db = new AvensiaWebshopEntities())
            {
                var activeUser = db.Customer.SingleOrDefault(c => c.EmailAddress == txtUserName.Text.ToLower().Trim() && c.PasswordHash == txtPassword.Text.Trim());

                if (activeUser != null)
                {
                    Session[WebShopController.SessionKeyActiveUserID] = activeUser.CustomerID;
                    Response.Redirect("/Hem.aspx");
                }

                lblStatus.Text = "Felaktigt lösenord eller användarnamn";
                lblStatus.Visible = true;


            }
        }
コード例 #10
0
        internal static bool AddOrUpdateProductToCart(ref ShopingCart cart, int productID, short productQty, bool replaceQuantity = false)
        {
            using (var db = new AvensiaWebshopEntities())
            {
                var vProduct = db.vProductAndDescripttionExtendedENOnly.FirstOrDefault(p => p.ProductID == productID);

                if (vProduct == null)
                {
                    // TODO: Implementera felkod om Product är null (inte finns i database).
                    return false;
                }

                var cartItem = cart.CartItems.FirstOrDefault(i => i.ProductID == vProduct.ProductID);
                
                if (cartItem == null)
                {
                    cartItem = new CartItem()
                    {
                        ProductID = vProduct.ProductID,
                        ProductModelID = vProduct.ProductModelID,
                        ProductName = vProduct.Name,
                        ProductImage = vProduct.LargePhotoFileName,
                        Price = Math.Round(WebShopController.GetProductPrice(vProduct), 2),
                        Quantity = 0,
                        Dricounted = vProduct.DiscountActive ?? false,
                        OriginalPrice = Math.Round(vProduct.ListPrice, 2)
                    };

                    cart.CartItems.Insert(0, cartItem);
                }

                if (replaceQuantity)
                    cartItem.Quantity = productQty;
                else
                    cartItem.Quantity += productQty;
            }

            return true;
        }
コード例 #11
0
        private void GetActiveUser()
        {
            var activeUserID = Session[WebShopController.SessionKeyActiveUserID];

            if (activeUserID != null)
            {
                using (var db = new AvensiaWebshopEntities())
                {
                    var customer = db.Customer.FirstOrDefault(c => c.CustomerID == (int)activeUserID);

                    if (customer != null && customer.CustomerID > 0)
                    {
                        txtFirstName.Text = customer.FirstName;
                        txtForLastName.Text = customer.LastName;
                        txtEmail.Text = customer.EmailAddress;

                        txtFirstName.Enabled = false;
                        txtForLastName.Enabled = false;
                        txtEmail.Enabled = false;
                    }
                }
            }
        }
コード例 #12
0
        protected void btnRegister_Click(object sender, EventArgs e)
        {

            using (var db = new AvensiaWebshopEntities())
            {
                var customerExistQuery = db.Customer.FirstOrDefault(c => c.EmailAddress == txtUserName.Text);
                if (customerExistQuery != null)
                {
                    lblStatus.Text = "E-postadressen finns redan";
                    return;
                }
                else if (txtPassword.Text != txtConfirmPassword.Text)
                {
                    lblStatus.Text = "Password must match";
                    return;
                }
                var customer = new Customer()
                {
                    NameStyle = false,
                    FirstName = txtFirstName.Text.Trim(),
                    LastName = txtLastName.Text.Trim(),
                    EmailAddress = txtUserName.Text,
                    PasswordHash = txtPassword.Text,
                    PasswordSalt = "",
                    rowguid = Guid.NewGuid(),
                    ModifiedDate = DateTime.Now

                };
                db.Customer.Add(customer);

                db.SaveChanges();

                Session[WebShopController.SessionKeyActiveUserID] = customer.CustomerID;

                Response.Redirect("/Hem.aspx");
            }
        }
コード例 #13
0
        private void FillCategoryRepeaterAndDescrition(int parentCategoryId, bool showCategoryDescription = false)
        {
            using (var db = new AvensiaWebshopEntities())
            {
                IQueryable<vProductCategoryWithDescription> categoryQuery = db.vProductCategoryWithDescription;

                if (CategoryIDQueryString >= parentCategoryId)
                    categoryQuery = categoryQuery.Where(cat => cat.ParentProductCategoryID == CategoryIDQueryString);

                repSubMenu.DataSource = categoryQuery.ToList();
                repSubMenu.DataBind();

                var parentCategory =
                    db.vProductCategoryWithDescription.Where(cat => cat.ProductCategoryID == parentCategoryId)
                        .FirstOrDefault();

                ltPageHeader.Text = parentCategory.Name;

                if (showCategoryDescription && parentCategory.CategoryImageName != null)
                {
                    imgCategoryImage.ImageUrl = "~/images/products/" + parentCategory.CategoryImageName;
                    panelCategoryDescription.Visible = true;
                }
                if (showCategoryDescription && parentCategory.CategoryDescription != null)
                {
                    ltCategoryDescripton.Text = parentCategory.CategoryDescription;
                    panelCategoryDescription.Visible = true;
                }
            }
        }
コード例 #14
0
        private void FillProductInfo(int productModelId, int productID)
        {
            using (var db = new AvensiaWebshopEntities())
            {
                var products =
                    db.vProductAndDescripttionExtendedENOnly.Where(p => p.ProductModelID == productModelId)
                        .OrderBy(product => product.Name);

                var activeProduct =
                    (productID < 0)
                        ? products.FirstOrDefault()
                        : products.SingleOrDefault(p => p.ProductID == productID);

                hfActiveProduct.Value = activeProduct.ProductID.ToString();

                ltPageHeader.Text =
                    $"{activeProduct.ProductModel} {(activeProduct.Size != null ? $"Storlek {activeProduct.Size} " : string.Empty)}{(activeProduct.Color ?? string.Empty)}";

                imgMainImage.ImageUrl = $"/Media.ashx?image={activeProduct.LargePhotoFileName}";
                imgMainImage.AlternateText = activeProduct.Name;

                lbArticlePrice.Text = $"{activeProduct.ListPrice:N2}";

                if (activeProduct.DiscountActive != null && activeProduct.DiscountActive.Value)
                {
                    ltArticleOrginalPrice.Text = $"{activeProduct.ListPrice:N2}";

                    lbArticlePrice.Text =
                        $"{WebShopController.GetProductPrice(activeProduct):N2}";

                    lbArticlePrice.CssClass = "articleDiscountedPrice";
                    panelArticleOriginalPrice.Visible = true;
                }
                else
                {
                    lbArticlePrice.CssClass = string.Empty;

                    panelArticleOriginalPrice.Visible = false;
                }

                ltArticleDescription.Text = activeProduct.Description;

                ltArticleNumber.Text = activeProduct.ProductNumber;

                if (products.Count() > 1 && (activeProduct.Color != null || activeProduct.Size != null))
                {
                    UpdateArticleChoiseDropDown(products, activeProduct);
                }
            }
        }
コード例 #15
0
        private void DisplaySearchResult(string searchQueryFromUrl)
        {

            var searchStrings = new List<string>();
            var searchQuery = new List<vProductAndDescripttionExtendedENOnly>();

            if (searchQueryFromUrl.Length > 0)
                searchStrings.AddRange(searchQueryFromUrl.Split(' ').ToList());

            if (searchStrings.Count > 0)
            {
                string sqlQuery = "SELECT *" +
                                  " FROM [AvensiaWebShop].[dbo].[vProductAndDescripttionExtendedENOnly]" +
                                  " WHERE Name LIKE '%" + searchStrings[0] + "%'" +
                                  " OR Description LIKE '%" + searchStrings[0] + "%'" +
                                  " OR ProductNumber LIKE '%" + searchStrings[0] + "%'";

                for (int i = 1; i < searchStrings.Count; i++)
                {

                    sqlQuery += " OR Name LIKE '%" + searchStrings[i] + "%'" +
                                " OR Description LIKE '%" + searchStrings[i] + "%'" +
                                " OR ProductNumber LIKE '%" + searchStrings[0] + "%'";
                }

                using (var db = new AvensiaWebshopEntities())
                {
                    searchQuery = db.vProductAndDescripttionExtendedENOnly.SqlQuery(sqlQuery).ToList();
                }
            }

            ltPageHeader.Text = "Search results";
            
            if (searchQuery.ToList().Count > 0)
            {
                FillProductListAndFilter(searchQuery);

                panelProductList.Visible = true;
                PanelCategoryMenu.Visible = true;
                panelCategories.Visible = true;
            }
            else
            {
                panelNoProducts.Visible = true;
            }
        }
コード例 #16
0
        protected void btnConfirmOrder_Click(object sender, EventArgs e)
        {
            try
            {
                var shopingCart = (ShopingCart)Session[WebShopController.SessionKeyShopingCart];

                using (var db = new AvensiaWebshopEntities())
                {
                    var customer = new Customer()
                    {
                        NameStyle = false,
                        FirstName = txtFNamn.Text.Trim(),
                        LastName = txtENamn.Text.Trim(),
                        EmailAddress = txtEPost.Text.Trim(),
                        PasswordHash = "",
                        PasswordSalt = "",
                        rowguid = Guid.NewGuid(),
                        ModifiedDate = DateTime.Now

                    };
                    db.Customer.Add(customer);

                    var address = new Address()
                    {
                        AddressLine1 = txtAdress.Text.Trim(),
                        AddressLine2 = txtCoAdress.Text.Trim(),
                        City = txtOrt.Text.Trim(),
                        StateProvince = "",
                        CountryRegion = "",
                        PostalCode = txtPostNr.Text.Trim(),
                        rowguid = Guid.NewGuid(),
                        ModifiedDate = DateTime.Now
                    };
                    db.Address.Add(address);

                    db.SaveChanges();

                    var salesOrderHeader = new SalesOrderHeader()
                    {
                        OrderDate = DateTime.Today,
                        DueDate = DateTime.Today.AddDays(14),
                        SalesOrderNumber = "Number",
                        CustomerID = customer.CustomerID,
                        ShipToAddressID = address.AddressID,
                        ShipMethod = rblDeliveryOptions.SelectedItem.Text,
                        TaxAmt = shopingCart.SumTotal * (decimal)0.2,
                        ModifiedDate = DateTime.Now,
                        rowguid = Guid.NewGuid(),
                        Freight = GetFreightPrice()
                    };
                    db.SalesOrderHeader.Add(salesOrderHeader);

                    db.SaveChanges();

                    foreach (var cartItem in shopingCart.CartItems)
                    {
                        db.SalesOrderDetail.Add(new SalesOrderDetail()
                        {
                            SalesOrderID = salesOrderHeader.SalesOrderID,
                            OrderQty = cartItem.Quantity,
                            ProductID = cartItem.ProductID,
                            UnitPrice = cartItem.Price * (decimal)0.8,
                            UnitPriceDiscount = (decimal)0,
                            rowguid = Guid.NewGuid(),
                            ModifiedDate = DateTime.Now
                        });

                        db.SaveChanges();
                    }


                    Session["LastOrderID"] = salesOrderHeader.SalesOrderID;
                }
            }
            catch (Exception ex)
            {
                Session["LastOrderID"] = null;

                throw;
            }
            Session[WebShopController.SessionKeyShopingCart] = new ShopingCart();
            Response.Redirect("/Bekraftelse.aspx");
        }
コード例 #17
0
        internal static List<Kampanj> GetCampaigns(int numberOfCampaigns)
        {
            var campaignsList = new List<Kampanj>();
            using (var db = new AvensiaWebshopEntities())
            {
                campaignsList = db.Kampanj.Where(c => c.KampanjStatus == "active").ToList();
                if (campaignsList.Count > numberOfCampaigns)
                {
                    int numberToRemove = campaignsList.Count - numberOfCampaigns;
                    campaignsList.RemoveRange(numberOfCampaigns, numberToRemove);
                }
            }

           return campaignsList;
        }
コード例 #18
0
        internal static List<vProductAndDescripttionExtendedENOnly> GetPopularProducts(int numberOfProducts)
        {
            var result = new List<vProductAndDescripttionExtendedENOnly>();

            using (var db = new AvensiaWebshopEntities())
            {
                var popularItemIdsQuery =
                    db.SalesOrderDetail
                        .GroupBy(p => p.ProductID)
                        .OrderByDescending(g => g.Count())
                        .Select(g => g.FirstOrDefault().Product.ProductID)
                        .Take(numberOfProducts);

                result =
                    db.vProductAndDescripttionExtendedENOnly
                        .Where(p => popularItemIdsQuery.Contains(p.ProductID)).ToList();

                if (result.Count < numberOfProducts)
                {
                    result.AddRange(db.vProductAndDescripttionExtendedENOnly.GroupBy(p => p.ProductModelID)
                        .Where((p, index) => index % 5 == 0)
                        .Select(group => group.FirstOrDefault())
                        .Take(numberOfProducts - result.Count)
                        .ToList()
                        );
                }
            }

            return result;
        }
コード例 #19
0
        private void FillProductRepeater(int productParentCategory)
        {
            var products = new List<vProductAndDescripttionExtendedENOnly>();

            using (var db = new AvensiaWebshopEntities())
            {
                var categoryQuery =
                    db.ProductCategory.FirstOrDefault(cat => cat.ProductCategoryID == productParentCategory);

                if (categoryQuery != null && !string.IsNullOrEmpty(categoryQuery.Name))
                    ltPageHeader.Text = categoryQuery.Name;

                products = db.vProductAndDescripttionExtendedENOnly
                    .Where(product => product.ProductCategoryID == productParentCategory)
                    .ToList();
            }

            products = FillProductListAndFilter(products);
        }
コード例 #20
0
        internal void IsUserActive()
        {
            var activeUserID = Session[WebShopController.SessionKeyActiveUserID];

            if (activeUserID == null)
            {
                panelAuthorized.Visible = false;
                panelNonAuthorized.Visible = true;
            }
            else
            {
                using (var db = new AvensiaWebshopEntities())
                {
                    var customer = db.Customer.FirstOrDefault(c => c.CustomerID == (int)activeUserID);

                    lblCustomerName.Text = customer.FirstName;
                }

                panelAuthorized.Visible = true;
                panelNonAuthorized.Visible = false;
            }
        }