Exemple #1
0
 public IHttpActionResult DefaultRating(string cartid)
 {
     try
     {
         using (var entity = new RoseFashionDBEntities())
         {
             var items = entity.Cart_Product.Where(cp => cp.CartID == cartid).ToList();
             for (int i = 0; i < items.Count; i++)
             {
                 string pid     = items[i].ProductID;
                 string userid  = items[i].Cart.UserID;
                 var    existed = entity.Ratings.Where(r => r.UserID == userid && r.ProductID == pid).FirstOrDefault();
                 if (existed == null)
                 {
                     entity.Ratings.Add(new Rating()
                     {
                         UserID    = userid,
                         ProductID = pid,
                         Star      = 3
                     });
                 }
             }
             entity.SaveChanges();
             return(Ok());
         }
     }
     catch (Exception ex)
     {
         return(InternalServerError(ex));
     }
 }
 public IHttpActionResult GetUserBills(string userid)
 {
     try
     {
         using (var entity = new RoseFashionDBEntities())
         {
             var cartidlist = entity.Carts.Where(c => c.UserID == userid && c.IsUsing == false)
                              .Select(c => c.CartID).ToList();
             List <BillModel> result = new List <BillModel>();
             for (int i = 0; i < cartidlist.Count(); i++)
             {
                 string cartid = cartidlist[i];
                 var    bill   = entity.Bills.Where(b => b.CartID == cartid)
                                 .Select(b => new BillModel
                 {
                     BillID     = b.BillID,
                     OrderDate  = b.OrderDate,
                     TotalPrice = b.TotalPrice,
                     Status     = b.Status
                 }).FirstOrDefault();
                 result.Add(bill);
             }
             return(Ok(result));
         }
     }
     catch (Exception ex)
     {
         return(InternalServerError(ex));
     }
 }
 public IHttpActionResult Register(UserModel user)
 {
     try
     {
         using (var entity = new RoseFashionDBEntities())
         {
             int existedemail = entity.Users.Count(u => u.Email.Equals(user.Email));
             if (existedemail > 0)
             {
                 return(BadRequest("Email already in use."));
             }
             entity.Users.Add(new User()
             {
                 UserID   = Guid.NewGuid().ToString(),
                 FullName = user.FullName,
                 Email    = user.Email,
                 Password = Md5Encryption(user.Password),
                 Role     = "user"
             });
             entity.SaveChanges();
             return(Ok("Register successfully."));
         }
     }
     catch (Exception ex)
     {
         return(InternalServerError(ex));
     }
 }
        public IHttpActionResult CreateGuestUser()
        {
            try
            {
                using (var entity = new RoseFashionDBEntities())
                {
                    //string guestname = "GUEST-" + (entity.Users.Count(u => u.Role == "guest") + 1);
                    string newid = Guid.NewGuid().ToString();
                    entity.Users.Add(new User()
                    {
                        UserID   = newid,
                        FullName = "GUEST",
                        Password = Md5Encryption(newid),
                        Role     = "guest"
                    });
                    entity.SaveChanges();

                    return(Ok(newid));
                    //return Ok(guestname + "@gmail.com");
                }
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
Exemple #5
0
 public IHttpActionResult GetNewestProducts()
 {
     try
     {
         using (var entity = new RoseFashionDBEntities())
         {
             var topsale = entity.fn_GetNewestProduct(8).Select(p => p.PID).ToList();
             List <ProductModel> result = new List <ProductModel>();
             for (int i = 0; i < topsale.Count(); i++)
             {
                 string pid     = topsale[i];
                 var    product = entity.Products.Where(p => p.ProductID == pid)
                                  .Select(p => new ProductModel
                 {
                     ProductID       = p.ProductID,
                     Name            = p.Name,
                     Image           = p.Image,
                     Price           = p.Price,
                     DiscountPercent = p.DiscountPercent
                 }).FirstOrDefault();
                 result.Add(product);
             }
             return(Ok(result));
         }
     }
     catch (Exception ex)
     {
         return(InternalServerError(ex));
     }
 }
 public IHttpActionResult GetStatisticMonth(int year)
 {
     try
     {
         using (var entity = new RoseFashionDBEntities())
         {
             List <StatisticalModel> result = new List <StatisticalModel>();
             Double[] arrSum = new double[12];
             int      n      = 0;
             for (int i = 1; i < 13; i++)
             {
                 double sum = 0;
                 try
                 {
                     sum = entity.Bills.Where(c => c.OrderDate.Year == year && c.OrderDate.Month == i).Sum(c => c.TotalPrice);
                 }
                 catch
                 {
                     sum = 0;
                 }
                 arrSum[n++] = sum;
             }
             return(Ok(arrSum));
         }
     }
     catch (Exception ex)
     {
         return(InternalServerError(ex));
     }
 }
Exemple #7
0
 bool UpdateQuantity(string action, CartModel[] items)
 {
     using (var entity = new RoseFashionDBEntities())
     {
         for (int i = 0; i < items.Count(); i++)
         {
             string pid     = items[i].ProductID;
             string size    = items[i].Size;
             var    product = entity.Product_Size_Quantity.Where(p => p.ProductID == pid && p.Size == size).FirstOrDefault();
             if (action.Equals("add"))
             {
                 product.Quantity += items[i].Amount;
             }
             else
             {
                 if (product.Quantity >= items[i].Amount)
                 {
                     product.Quantity -= items[i].Amount;
                 }
                 else
                 {
                     return(false);
                 }
             }
         }
         entity.SaveChanges();
     }
     return(true);
 }
 public IHttpActionResult AddBill(BillModel billinfo)
 {
     try
     {
         using (var entity = new RoseFashionDBEntities())
         {
             entity.Bills.Add(new Bill
             {
                 BillID          = "BL-" + (entity.Bills.Count() + 1),
                 CartID          = billinfo.CartID,
                 PaymentMethod   = billinfo.PaymentMethod,
                 OrderDate       = DateTime.Now.Date,
                 DeliveryDate    = DateTime.Now.Date,
                 ReceiverName    = billinfo.ReceiverName,
                 ReceiverPhone   = billinfo.ReceiverPhone,
                 DeliveryAddress = billinfo.DeliveryAddress,
                 ProvinceName    = billinfo.ProvinceName,
                 DistrictName    = billinfo.DistrictName,
                 TotalPrice      = billinfo.TotalPrice,
                 DeliveryFee     = billinfo.DeliveryFee,
                 Status          = billinfo.Status,
                 IsDeleted       = false
             });
             var usercart = entity.Carts.Where(c => c.CartID == billinfo.CartID).FirstOrDefault();
             usercart.IsUsing = false;
             entity.SaveChanges();
             return(Ok("OK"));
         }
     }
     catch (Exception ex)
     {
         return(InternalServerError(ex));
     }
 }
Exemple #9
0
 public IHttpActionResult GetLastUsedCartID(string userid)
 {
     try
     {
         using (var entity = new RoseFashionDBEntities())
         {
             var oldcartid = entity.Carts.Where(c => c.UserID == userid && c.IsUsing == true).Select(c => c.CartID).FirstOrDefault();
             if (oldcartid == null)
             {
                 string newcartid = "CR-" + (entity.Carts.Count() + 1);
                 entity.Carts.Add(new Cart
                 {
                     CartID  = newcartid,
                     UserID  = userid,
                     IsUsing = true
                 });
                 entity.SaveChanges();
                 return(Ok(newcartid));
             }
             return(Ok(oldcartid));
         }
     }
     catch (Exception ex)
     {
         return(InternalServerError(ex));
     }
 }
        public IHttpActionResult GetYears()
        {
            try
            {
                using (var entity = new RoseFashionDBEntities())
                {
                    var yearlist = entity.Bills.Select(c => c.OrderDate.Year).Distinct().ToList();
                    List <StatisticalModel> result = new List <StatisticalModel>();

                    for (int i = 0; i < yearlist.Count(); i++)
                    {
                        int year  = yearlist[i];
                        var years = new StatisticalModel
                        {
                            Year = year
                        };
                        result.Add(years);
                    }
                    return(Ok(result));
                }
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
Exemple #11
0
        public IHttpActionResult GetRecommendedProduct(string userid)
        {
            try
            {
                using (var entity = new RoseFashionDBEntities())
                {
                    //chọn top 10 sp mà user có rating dự đoán cao
                    var recommendedproducts = entity.fn_GetRecommendedProduct(userid).ToList();

                    var result = new List <ProductModel>();
                    foreach (string productid in recommendedproducts)
                    {
                        var item = entity.Products.Where(p => p.ProductID == productid)
                                   .Select(p => new ProductModel()
                        {
                            ProductID       = p.ProductID,
                            Name            = p.Name,
                            Image           = p.Image,
                            Price           = p.Price,
                            CategoryID      = p.CategoryID,
                            DiscountPercent = p.DiscountPercent
                        }).FirstOrDefault();
                        result.Add(item);
                    }
                    return(Ok(result));
                }
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
 public IHttpActionResult GetBillOneInfo(string billid)
 {
     try
     {
         using (var entity = new RoseFashionDBEntities())
         {
             var result = entity.Bills.Where(b => b.BillID == billid)
                          .Select(b => new BillModel
             {
                 BillID          = b.BillID,
                 CartID          = b.CartID,
                 PaymentMethod   = b.PaymentMethod,
                 ReceiverName    = b.ReceiverName,
                 ReceiverPhone   = b.ReceiverPhone,
                 DeliveryAddress = b.DeliveryAddress,
                 ProvinceName    = b.ProvinceName,
                 DistrictName    = b.DistrictName,
                 OrderDate       = b.OrderDate,
                 DeliveryDate    = b.DeliveryDate,
                 DiscountCode    = b.DiscountCode,
                 DeliveryFee     = b.DeliveryFee,
                 TotalPrice      = b.TotalPrice,
                 Status          = b.Status
             }).FirstOrDefault();
             return(Ok(result));
         }
     }
     catch (Exception ex)
     {
         return(InternalServerError(ex));
     }
 }
Exemple #13
0
 public IHttpActionResult GetOneUserRating(string userid, string pid)
 {
     try
     {
         using (var entity = new RoseFashionDBEntities())
         {
             var result = entity.Ratings.Where(r => r.UserID == userid && r.ProductID == pid)
                          .Select(r => new RatingModel()
             {
                 UserID    = r.UserID,
                 ProductID = r.ProductID,
                 Title     = r.Title,
                 Comment   = r.Comment,
                 Star      = r.Star
             }).FirstOrDefault();
             if (result == null)
             {
                 result           = new RatingModel();
                 result.UserID    = userid;
                 result.ProductID = pid;
             }
             return(Ok(result));
         }
     }
     catch (Exception ex)
     {
         return(InternalServerError(ex));
     }
 }
 public IHttpActionResult RegisterSocial(UserModel user)
 {
     try
     {
         using (var entity = new RoseFashionDBEntities())
         {
             int existedemail = entity.Users.Count(u => u.UserID.Equals(user.UserID));
             if (existedemail < 1)
             {
                 entity.Users.Add(new User()
                 {
                     UserID   = user.UserID,
                     FullName = user.FullName,
                     Password = user.UserID,
                     Email    = user.Email,
                     Role     = "user"
                 });
             }
             entity.SaveChanges();
             return(Ok("Register successfully."));
         }
     }
     catch (Exception ex)
     {
         return(InternalServerError(ex));
     }
 }
Exemple #15
0
 public IHttpActionResult FindProduct(string keyword)
 {
     try
     {
         using (var entity = new RoseFashionDBEntities())
         {
             var result = entity.Products.Where(c => c.Name.Contains(keyword) && c.IsDeleted == false)
                          .Select(c => new ProductModel
             {
                 ProductID       = c.ProductID,
                 Name            = c.Name,
                 Image           = c.Image,
                 Price           = c.Price,
                 CategoryID      = c.CategoryID,
                 DiscountPercent = c.DiscountPercent
             }).ToList();
             //.Select(p => p.ProductID).ToList();
             return(Ok(result));
         }
     }
     catch (Exception ex)
     {
         return(InternalServerError(ex));
     }
 }
Exemple #16
0
 public IHttpActionResult UpdateCart(string cartid, CartModel[] items)
 {
     try
     {
         using (var entity = new RoseFashionDBEntities())
         {
             entity.Cart_Product.RemoveRange(entity.Cart_Product.Where(cp => cp.CartID == cartid).ToList());
             entity.SaveChanges();
             if (items.Length == 0)
             {
                 return(Ok("OK"));
             }
             for (int i = 0; i < items.Length; i++)
             {
                 var oneitem = items[i];
                 entity.Cart_Product.Add(new Cart_Product
                 {
                     CartID        = cartid,
                     ProductID     = oneitem.ProductID,
                     Size          = oneitem.Size,
                     Amount        = oneitem.Amount,
                     SalePrice     = oneitem.SalePrice,
                     OriginalPrice = oneitem.OriginalPrice
                 });
             }
             entity.SaveChanges();
         }
         return(Ok("OK"));
     }
     catch (Exception ex)
     {
         return(InternalServerError(ex));
     }
 }
Exemple #17
0
 public IHttpActionResult DeleteMultipleProduct(string[] pids)
 {
     try
     {
         using (var entity = new RoseFashionDBEntities())
         {
             for (int i = 0; i < pids.Count(); i++)
             {
                 string id             = pids[i];
                 var    existedproduct = entity.Products.Where(p => p.ProductID == id).FirstOrDefault();
                 if (existedproduct == null)
                 {
                     return(BadRequest("Product not found."));
                 }
                 existedproduct.IsDeleted = true;
                 entity.SaveChanges();
             }
             return(Ok("Remove products successfully."));
         }
     }
     catch (Exception ex)
     {
         return(InternalServerError(ex));
     }
 }
 public IHttpActionResult ShowAllUser()
 {
     using (var entity = new RoseFashionDBEntities())
     {
         return(Ok(entity.Users.Select(u => new UserModel
         {
             FullName = u.FullName,
             Password = u.Password
         }).ToList()));
     }
 }
 public IHttpActionResult GetAllCategory()
 {
     using (var entity = new RoseFashionDBEntities())
     {
         IList <CategoryModel> result = entity.Categories.OrderBy(ct => ct.Name).Select(ct => new CategoryModel
         {
             CategoryID   = ct.CategoryID,
             Name         = ct.Name,
             MainCategory = ct.MainCategory
         }).ToList();
         return(Ok(result));
     }
 }
 public IHttpActionResult GetCategoryFromMainCategory(string maincategory)
 {
     using (var entity = new RoseFashionDBEntities())
     {
         IList <CategoryModel> result = entity.Categories.Where(ct => ct.MainCategory == maincategory)
                                        .Select(ct => new CategoryModel
         {
             CategoryID   = ct.CategoryID,
             Name         = ct.Name,
             MainCategory = ct.MainCategory
         }).ToList();
         return(Ok(result));
     }
 }
        public IHttpActionResult CheckEmail(string email)
        {
            try
            {
                using (var entity = new RoseFashionDBEntities())
                {
                    int checkemail = entity.Users.Count(u => u.Email.Equals(email));

                    return(Ok(checkemail));
                }
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
        public IHttpActionResult GetStatisticYear(int fromyear, int toyear)
        {
            try
            {
                using (var entity = new RoseFashionDBEntities())
                {
                    //List<StatisticalModel> result = new List<StatisticalModel>();
                    int n = 0, j = 0;
                    if (fromyear > toyear)
                    {
                        int tem = fromyear;
                        fromyear = toyear;
                        toyear   = tem;
                    }
                    for (int i = fromyear; i <= toyear; i++)
                    {
                        j++;
                    }
                    Double[] arrSum = new double[j];
                    for (int i = fromyear; i <= toyear; i++)
                    {
                        double sum = 0;
                        try
                        {
                            sum = entity.Bills.Where(c => c.OrderDate.Year == i).Sum(c => c.TotalPrice);
                        }
                        catch
                        {
                            sum = 0;
                        }

                        arrSum[n++] = sum;
                    }
                    //var statistic = new StatisticalModel
                    //{
                    //    StaticYear = arrSum
                    //};

                    //result.Add(statistic);
                    return(Ok(arrSum));
                }
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
Exemple #23
0
        public IHttpActionResult AddProduct(ProductModel newproduct)
        {
            try
            {
                using (var entity = new RoseFashionDBEntities())
                {
                    //kiểm tra sản phẩm đã tồn tại chưa
                    bool existedproduct = entity.Products.Any(p => p.Name == newproduct.Name);
                    if (existedproduct == true)
                    {
                        return(BadRequest("This product already exists."));
                    }

                    newproduct.ProductID = "PR-" + (entity.Products.Count() + 1);
                    var    randomcode = Guid.NewGuid();
                    string imagename  = newproduct.ProductID + "-" + randomcode + ".png";
                    string imagepath  = serverAddress + "/images/" + imagename;
                    entity.Products.Add(new Product
                    {
                        ProductID       = newproduct.ProductID,
                        Name            = newproduct.Name,
                        CategoryID      = newproduct.CategoryID,
                        Image           = imagepath,
                        Price           = newproduct.Price,
                        DiscountPercent = newproduct.DiscountPercent,
                        ImportDate      = DateTime.Now.Date
                    });
                    entity.SaveChanges();

                    for (int i = 0; i < newproduct.Size.Count(); i++)
                    {
                        entity.Product_Size_Quantity.Add(new Product_Size_Quantity
                        {
                            ProductID = newproduct.ProductID,
                            Size      = newproduct.Size[i],
                            Quantity  = newproduct.Quantity[i]
                        });
                        entity.SaveChanges();
                    }
                    return(Ok(imagename));
                }
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
        //tính độ tương thích giữa các user
        private void UserSimilarityCalculation()
        {
            using (var entity = new RoseFashionDBEntities())
            {
                var userlist = entity.Users.Where(u => u.Role != "admin").ToList();
                for (int i = 0; i < userlist.Count - 1; i++)    //không cần xét user cuối
                {
                    string userid1 = userlist[i].UserID;
                    for (int j = i + 1; j < userlist.Count; j++)    //duyệt qua từng người phía sau user đang xét
                    {
                        string userid2 = userlist[j].UserID;

                        //lấy 2 vector của 2 user cần so sánh
                        // vector chỉ lấy rate value của những sp mà cả 2 cùng đánh giá
                        var vectors = entity.fn_GetTwoVetor(userid1, userid2).ToList();

                        double[] vector1 = new double[vectors.Count];
                        double[] vector2 = new double[vectors.Count];
                        for (int k = 0; k < vectors.Count; k++)
                        {
                            vector1[k] = (double)vectors[k].User1Rating;
                            vector2[k] = (double)vectors[k].User2Rating;
                        }

                        //tính và lưu lại độ tương thích của 2 user vào database
                        Similarity newrecord = new Similarity();
                        newrecord.UserID1        = userid1;
                        newrecord.UserID2        = userid2;
                        newrecord.SimilarityRate = Cosine_Similarity(vector1, vector2);

                        var existedrecord = entity.Similarities.FirstOrDefault(r =>
                                                                               r.UserID1 == newrecord.UserID1 && r.UserID2 == newrecord.UserID2);

                        if (existedrecord != null)
                        {
                            existedrecord.SimilarityRate = newrecord.SimilarityRate;
                        }
                        else
                        {
                            entity.Similarities.Add(newrecord);
                        }
                        entity.SaveChanges();
                    }
                }
            }
        }
Exemple #25
0
        public IHttpActionResult EditProduct(ProductModel editedproduct)
        {
            try
            {
                using (var entity = new RoseFashionDBEntities())
                {
                    //kiểm tra sản phẩm có tồn tại hay không
                    var existedproduct = entity.Products.Where(p => p.ProductID == editedproduct.ProductID).FirstOrDefault();
                    if (existedproduct == null)
                    {
                        return(BadRequest("Product not found."));
                    }
                    //nếu có => thay đổi các thuộc tính

                    //bỏ ảnh cũ thay ảnh mới
                    string imagename = "";
                    if (editedproduct.Image.Equals("changed"))
                    {
                        if (RemoveOldImage(existedproduct.Image) == false)
                        {
                            return(BadRequest("Fail to remove image"));
                        }
                        var randomcode = Guid.NewGuid();
                        imagename            = editedproduct.ProductID + "-" + randomcode + ".png";
                        existedproduct.Image = serverAddress + "/images/" + imagename;
                    }
                    existedproduct.Name            = editedproduct.Name;
                    existedproduct.CategoryID      = editedproduct.CategoryID;
                    existedproduct.Price           = editedproduct.Price;
                    existedproduct.DiscountPercent = editedproduct.DiscountPercent;
                    for (int i = 0; i < editedproduct.Size.Count(); i++)
                    {
                        string size            = editedproduct.Size[i];
                        var    currentquantity = entity.Product_Size_Quantity.Where(p => p.ProductID == editedproduct.ProductID && p.Size == size).FirstOrDefault();
                        currentquantity.Quantity = editedproduct.Quantity[i];
                    }
                    entity.SaveChanges();
                    return(Ok(imagename));
                }
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
 public IHttpActionResult EditCategory(CategoryModel updatecategory)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest("Invalid data."));
     }
     using (var entity = new RoseFashionDBEntities())
     {
         var IDCategory = entity.Categories.Where(c => c.CategoryID.Equals(updatecategory.CategoryID)).FirstOrDefault();
         if (IDCategory != null)
         {
             IDCategory.Name         = updatecategory.Name;
             IDCategory.MainCategory = updatecategory.MainCategory;
             entity.SaveChanges();
             return(Ok("Edit category successfully!"));
         }
         return(NotFound());
     }
 }
 public IHttpActionResult UpdateBill(BillModel billinfo)
 {
     try
     {
         using (var entity = new RoseFashionDBEntities())
         {
             var    bill      = entity.Bills.Where(s => s.BillID == billinfo.BillID).FirstOrDefault();
             string oldstatus = bill.Status;
             bill.Status       = billinfo.Status;
             bill.DeliveryDate = billinfo.DeliveryDate;
             entity.SaveChanges();
             return(Ok(oldstatus));
         }
     }
     catch (Exception ex)
     {
         return(InternalServerError(ex));
     }
 }
        public IHttpActionResult ChangePass(UserModel account, string email)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Invalid data."));
            }
            string pwrHash = GetMd5Hash(account.Password);

            using (var entity = new RoseFashionDBEntities())
            {
                var Email = entity.Users.Where(c => c.Email.Equals(email)).FirstOrDefault();
                if (Email != null)
                {
                    Email.Password = account.Password;
                    entity.SaveChanges();
                    return(Ok("Edit password successfully!"));
                }
                return(NotFound());
            }
        }
Exemple #29
0
 public IHttpActionResult CheckingPurchasedProduct(string userid, string productid)
 {
     try
     {
         using (var entity = new RoseFashionDBEntities())
         {
             bool result  = false;
             var  existed = entity.fn_CheckingIfProductWasPurchasedByUser(userid, productid).FirstOrDefault();
             if (existed != null)
             {
                 result = true;
             }
             return(Ok(result));
         }
     }
     catch (Exception ex)
     {
         return(InternalServerError(ex));
     }
 }
Exemple #30
0
 public IHttpActionResult GetTotalRatingOfProduct(string pid)
 {
     try
     {
         using (var entity = new RoseFashionDBEntities())
         {
             double result     = 0;
             var    ratinglist = entity.Ratings.Where(r => r.ProductID == pid).ToList();
             if (ratinglist.Count > 0)
             {
                 result = ratinglist.Sum(r => r.Star) / ratinglist.Count;
             }
             return(Ok(result));
         }
     }
     catch (Exception ex)
     {
         return(InternalServerError(ex));
     }
 }