public HttpResponseMessage PurchaseVipNews([FromUri] int quantity)
 {
     try
     {
         using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
         {
             entities.Configuration.ProxyCreationEnabled = false;
             SponsoredNewsOrder sno = new SponsoredNewsOrder();
             sno.UserID = HttpContext.Current.User.Identity.GetUserId();
             sno.SponsoredNewsOrderDate = DateTime.Now;
             sno.Quantity = quantity;
             sno.SumPrice = sno.Quantity * 50000;
             entities.SponsoredNewsOrders.Add(sno);
             entities.UserInfos.Where(x => x.UserID == sno.UserID).FirstOrDefault().VipNewsCount =
                 entities.UserInfos.Where(x => x.UserID == sno.UserID).FirstOrDefault().VipNewsCount
                 + quantity;
             entities.SaveChanges();
             return(Request.CreateResponse(HttpStatusCode.OK, "PURCHASE OK"));
         }
     }
     catch (Exception ex)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
     }
 }
        //Thống kê số tin bán được và số tiền thu được. Nếu không điền month và year thì sẽ thống kê tất cả từ trước đến giờ.
        //Nếu có truyền year month vào thì thống kê tương đương tháng đó
        //Nếu truyền vào thêm month và year thì sẽ lọc ra tất các hóa đơn có trong thời gian đó
        public HttpResponseMessage SponsoredNewsAnalysis(string month = null, string year = null)
        {
            try
            {
                using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
                {
                    entities.Configuration.ProxyCreationEnabled = false;
                    var returnlist = entities.SponsoredNewsOrders.ToList();

                    if (month != null)
                    {
                        int tempMoth = Convert.ToInt32(month);
                        returnlist = returnlist.Where(x => x.SponsoredNewsOrderDate.Value.Month == tempMoth).ToList();
                    }

                    if (year != null)
                    {
                        int tempYear = Convert.ToInt32(year);
                        returnlist = returnlist.Where(x => x.SponsoredNewsOrderDate.Value.Year == tempYear).ToList();
                    }

                    int sumQuantity = Convert.ToInt32(returnlist.Sum(x => x.Quantity));
                    int sumPrice    = Convert.ToInt32(returnlist.Sum(x => x.SumPrice));
                    var result      = new { sumquantity = sumQuantity, sumPrice = sumPrice };

                    return(Request.CreateResponse(HttpStatusCode.OK, result));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
        public HttpResponseMessage LoadAllMyNewsOrders(string month = null, string year = null)
        {
            try
            {
                using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
                {
                    entities.Configuration.ProxyCreationEnabled = false;
                    var returnlist = entities.SponsoredNewsOrders.Select(x => new { x.SponsoredNewsOrderID, x.UserID, userName = entities.AspNetUsers.FirstOrDefault(y => y.Id == x.UserID).UserName, x.Quantity, x.SumPrice, x.SponsoredNewsOrderDate }).OrderByDescending(x => x.SponsoredNewsOrderDate).ToList();

                    string currentuid = User.Identity.GetUserId();
                    returnlist = returnlist.Where(x => x.UserID == currentuid).ToList();

                    if (month != null)
                    {
                        int tempMoth = Convert.ToInt32(month);
                        returnlist = returnlist.Where(x => x.SponsoredNewsOrderDate.Value.Month == tempMoth).ToList();
                    }

                    if (year != null)
                    {
                        int tempYear = Convert.ToInt32(year);
                        returnlist = returnlist.Where(x => x.SponsoredNewsOrderDate.Value.Year == tempYear).ToList();
                    }

                    return(Request.CreateResponse(HttpStatusCode.OK, returnlist));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
예제 #4
0
 public HttpResponseMessage CheckBanByUserID(string uid)
 {
     try
     {
         using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
         {
             bool flag = false;
             entities.Configuration.ProxyCreationEnabled = false;
             var list = entities.BanAccounts.Where(x => x.UserID == uid && x.LiftDate > DateTime.Now).ToList();
             if (list.Count != 0)
             {
                 flag = true;
                 var respond = new { banned = flag, reason = list[list.Count - 1].Reason };
                 return(Request.CreateResponse(HttpStatusCode.OK, respond));
             }
             else
             {
                 var respond2 = new { banned = flag, reason = "" };
                 return(Request.CreateResponse(HttpStatusCode.OK, respond2));
             }
         }
     }
     catch (Exception ex)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
     }
 }
예제 #5
0
        public HttpResponseMessage ExtendTime([FromUri] int SponsoredItemID)
        {
            try
            {
                using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
                {
                    entities.Configuration.ProxyCreationEnabled = false;
                    string        currentUserID = User.Identity.GetUserId();
                    SponsoredItem sno           = entities.SponsoredItems.FirstOrDefault(x => x.SponsoredItemID == SponsoredItemID);
                    if (sno != null)
                    {
                        var user = entities.UserInfos.FirstOrDefault(x => x.UserID == currentUserID);
                        if (user.VipNewsCount == 0)
                        {
                            return(Request.CreateErrorResponse(HttpStatusCode.NotAcceptable, "Hết số lượng được đăng"));
                        }

                        sno.EndDate       = sno.EndDate.Value.AddDays(7);
                        user.VipNewsCount = user.VipNewsCount - 1;
                        entities.SaveChanges();
                    }
                    return(Request.CreateResponse(HttpStatusCode.OK, "POST OK"));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
예제 #6
0
 public HttpResponseMessage DeleteMyRating([FromUri] int pid)
 {
     try
     {
         using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
         {
             entities.Configuration.ProxyCreationEnabled = false;
             string currentUserID = User.Identity.GetUserId();
             var    checkIfRated  = entities.Ratings.FirstOrDefault(x => x.ProductID == pid && x.UserID == currentUserID);
             if (checkIfRated != null)
             {
                 entities.Ratings.Remove(checkIfRated);
                 entities.SaveChanges();
                 return(Request.CreateResponse(HttpStatusCode.OK, "Đã xóa Rating"));
             }
             else
             {
                 return(Request.CreateErrorResponse(HttpStatusCode.BadGateway, "Có lỗi xảy ra"));
             }
         }
     }
     catch
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadGateway, "Có lỗi xảy ra"));
     }
 }
예제 #7
0
 public HttpResponseMessage ChangetoRead(int rid)
 {
     try
     {
         using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
         {
             entities.Configuration.ProxyCreationEnabled = false;
             var result = entities.Reports.FirstOrDefault(x => x.ReportID == rid);
             if (result != null)
             {
                 result.IsRead = true;
                 entities.SaveChanges();
                 return(Request.CreateResponse(HttpStatusCode.OK));
             }
             else
             {
                 return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Có lỗi"));
             }
         }
     }
     catch (Exception ex)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
     }
 }
예제 #8
0
        public HttpResponseMessage LoadAllSponsoredItemsInTime(string skip = null, string take = null)
        {
            try
            {
                using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
                {
                    entities.Configuration.ProxyCreationEnabled = false;
                    var result = entities.SponsoredItems.Where(x => x.EndDate > DateTime.Now).Select(y => new {
                        sponsoredItemID = y.SponsoredItemID,
                        startDate       = y.StartDate,
                        endDate         = y.EndDate,
                        product         = entities.Products.FirstOrDefault(z => y.ProductID == z.ProductID)
                    }).ToList();

                    if (take != null)
                    {
                        int tempTake = Convert.ToInt32(take);
                        if (skip != null)
                        {
                            int tempSkip = Convert.ToInt32(skip);
                            result = result.Skip(tempSkip).Take(tempTake).ToList();
                        }
                        else
                        {
                            result = result.Take(tempTake).ToList();
                        }
                    }
                    return(Request.CreateResponse(HttpStatusCode.OK, result));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
예제 #9
0
 public HttpResponseMessage LoadAllCompleteOrders([FromUri] string stateToLoad = "Done")
 {
     try
     {
         using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
         {
             entities.Configuration.ProxyCreationEnabled = false;
             var listOrders = entities.OrderItems.GroupBy(x => new { x.OrderID, x.Order.OrderDate, x.Order.AspNetUser.Id, x.Order.OrderNameofUser, x.Order.OrderPhoneNumber, x.Order.OrderAddress, x.Order.AspNetUser.UserName, totalPrice = entities.OrderItems.Where(g => g.OrderID == x.OrderID).Sum(h => h.FinalPrice) }).Select(y => new { orderID = y.Key.OrderID, orderDate = y.Key.OrderDate, orderUser = y.Key.UserName, orderUserID = y.Key.Id, orderNameofUser = y.Key.OrderNameofUser, orderAddress = y.Key.OrderAddress, orderPhoneNumber = y.Key.OrderPhoneNumber, orderTotalPrice = y.Key.totalPrice, orderItemIDs = y.Select(z => new { orderItemID = z.OrderItemID, orderItemState = z.OrderState, orderItemQuantity = z.Quantity, orderItemPrice = z.FinalPrice, itemID = z.Product.ProductID, productName = z.Product.ProductName, productImage = z.Product.ProductImage }).ToList() }).ToList();
             var result     = listOrders.ToList();
             foreach (var i in listOrders)
             {
                 foreach (var j in i.orderItemIDs)
                 {
                     if (j.orderItemState != "Done")
                     {
                         result.Remove(i);
                         break;
                     }
                 }
             }
             return(Request.CreateResponse(HttpStatusCode.OK, result));
         }
     }
     catch (Exception ex)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
     }
 }
예제 #10
0
 public HttpResponseMessage Post([FromBody] Rating rating)
 {
     try
     {
         using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
         {
             entities.Configuration.ProxyCreationEnabled = false;
             string currentUserID = User.Identity.GetUserId();
             var    checkIfRated  = entities.Ratings.FirstOrDefault(x => x.ProductID == rating.Rating1 && x.UserID == currentUserID);
             if (checkIfRated != null)
             {
                 return(Request.CreateErrorResponse(HttpStatusCode.NotAcceptable, "Bạn đã rate rồi"));
             }
             entities.Configuration.ProxyCreationEnabled = false;
             rating.UserID = currentUserID;
             entities.Ratings.Add(rating);
             entities.SaveChanges();
             return(Request.CreateResponse(HttpStatusCode.OK, "POST OK"));
         }
     }
     catch (Exception ex)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
     }
 }
예제 #11
0
 public HttpResponseMessage LoadAllProduct(string sort = null, string take = null)
 {
     try
     {
         using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
         {
             entities.Configuration.ProxyCreationEnabled = false;
             var result = entities.Products.ToList();
             result = result.OrderByDescending(x => x.ProductID).ToList();
             if (take != null)
             {
                 int takeTemp = Convert.ToInt32(take);
                 result = result.Take(takeTemp).ToList();
             }
             if (sort == "dsc")
             {
                 result = result.OrderByDescending(x => x.ProductID).ToList();
             }
             return(Request.CreateResponse(HttpStatusCode.OK, result));
         }
     }
     catch (Exception ex)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
     }
 }
예제 #12
0
        public HttpResponseMessage Put(int id, [FromBody] Order order)
        {
            try
            {
                using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
                {
                    entities.Configuration.ProxyCreationEnabled = false;
                    var entity = entities.Orders.FirstOrDefault(e => e.OrderID == id);
                    if (entity == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.NotFound,
                                                           "Order with Id " + id.ToString() + " not found to update"));
                    }
                    else
                    {
                        entity.UserID       = order.UserID;
                        entity.OrderDate    = order.OrderDate;
                        entity.OrderAddress = order.OrderAddress;

                        entities.SaveChanges();

                        return(Request.CreateResponse(HttpStatusCode.OK, entity));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
예제 #13
0
        public HttpResponseMessage Put(int id, [FromBody] Brand brand)
        {
            try
            {
                using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
                {
                    entities.Configuration.ProxyCreationEnabled = false;
                    var entity = entities.Brands.FirstOrDefault(e => e.BrandID == id);
                    if (entity == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.NotFound,
                                                           "Product with Id " + id.ToString() + " not found to update"));
                    }
                    else
                    {
                        entity.BrandName = brand.BrandName;
                        entity.Detail    = brand.Detail;

                        entities.SaveChanges();

                        return(Request.CreateResponse(HttpStatusCode.OK, entity));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
예제 #14
0
 public HttpResponseMessage Delete(int id)
 {
     try
     {
         using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
         {
             entities.Configuration.ProxyCreationEnabled = false;
             var entity = entities.BanAccounts.FirstOrDefault(e => e.BanAccountID == id);
             if (entity == null)
             {
                 return(Request.CreateErrorResponse(HttpStatusCode.NotFound,
                                                    "Order item with Id = " + id.ToString() + " not found to delete"));
             }
             else
             {
                 entities.BanAccounts.Remove(entity);
                 entities.SaveChanges();
                 return(Request.CreateResponse(HttpStatusCode.OK, "Delete OK"));
             }
         }
     }
     catch (Exception ex)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
     }
 }
예제 #15
0
        public HttpResponseMessage EditCurrentUserInfo([FromBody] UserinfoModel userinfo)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
                }
                using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
                {
                    entities.Configuration.ProxyCreationEnabled = false;
                    string uid    = User.Identity.GetUserId();
                    var    entity = entities.UserInfos.FirstOrDefault(e => e.UserID == uid);
                    if (entity == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Có lỗi xảy ra"));
                    }
                    else
                    {
                        entity.Name        = userinfo.Name;
                        entity.HomeAddress = userinfo.HomeAddress;
                        entity.Email       = userinfo.Email;
                        entity.PhoneNumber = userinfo.PhoneNumber;
                        entity.CMND        = userinfo.CMND;
                        entities.SaveChanges();

                        return(Request.CreateResponse(HttpStatusCode.OK, "Đã sửa"));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
예제 #16
0
 //[Authorize]
 public HttpResponseMessage LoadAllUserInfo(string take = null, string userid = null, string ten = null, string email = null)
 {
     try
     {
         using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
         {
             entities.Configuration.ProxyCreationEnabled = false;
             var result = entities.UserInfos.Select(x => new { x.UserInfoID, x.UserID, x.Name, x.PhoneNumber, x.HomeAddress, x.CMND, LoginEmail = entities.AspNetUsers.FirstOrDefault(y => y.Id == x.UserID).UserName }).ToList();
             result = result.OrderByDescending(x => x.UserInfoID).ToList();
             if (userid != null)
             {
                 result = result.Where(x => x.UserID == userid).ToList();
             }
             if (ten != null)
             {
                 result = result.Where(x => x.Name == ten).ToList();
             }
             if (email != null)
             {
                 result = result.Where(x => x.LoginEmail == email).ToList();
             }
             if (take != null)
             {
                 int tempTake = Convert.ToInt32(take);
                 result = result.Take(tempTake).ToList();
             }
             return(Request.CreateResponse(HttpStatusCode.OK, result));
         }
     }
     catch (Exception ex)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
     }
 }
예제 #17
0
        public async Task <IHttpActionResult> Register2(RegisterBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = new ApplicationUser()
            {
                UserName = model.Email, Email = model.Email
            };

            IdentityResult result = await UserManager.CreateAsync(user, model.Password);

            if (result.Succeeded != true)
            {
                return(GetErrorResult(result));
            }
            using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
            {
                entities.Configuration.ProxyCreationEnabled = false;
                string newID             = entities.AspNetUsers.Where(x => x.Email == model.Email).FirstOrDefault().Id.ToString();
                string confirmationToken = UserManager.GenerateEmailConfirmationTokenAsync(newID).Result;

                //Tạo 1 Userinfo trống cho tài khoản mới tạo:
                UserInfo newuserinfo = new UserInfo();
                newuserinfo.UserID       = newID;
                newuserinfo.Name         = "";
                newuserinfo.HomeAddress  = "";
                newuserinfo.Email        = "";
                newuserinfo.Cart         = "[]";
                newuserinfo.VipNewsCount = 0;
                entities.UserInfos.Add(newuserinfo);
                entities.SaveChanges();

                //Gửi email yêu cầu kích hoạt
                SmtpClient client = new SmtpClient();
                client.Port                  = 587;
                client.Host                  = "smtp.gmail.com";
                client.EnableSsl             = true;
                client.Timeout               = 10000;
                client.DeliveryMethod        = SmtpDeliveryMethod.Network;
                client.UseDefaultCredentials = false;
                client.Credentials           = new System.Net.NetworkCredential("*****@*****.**", "hoahoa123");
                MailMessage mm = new MailMessage("*****@*****.**", model.Email, "Kích hoạt tài khoản", "http://localhost:8000/emailconfirm?userid=" + newID + "&token=" + confirmationToken.Replace("+", "%252b"));
                mm.BodyEncoding = UTF8Encoding.UTF8;
                mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;

                client.Send(mm);
            }
            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            return(Ok());
        }
예제 #18
0
        public HttpResponseMessage AddToCart([FromUri] int pid = 1, int q = 1)
        {
            using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
            {
                entities.Configuration.ProxyCreationEnabled = false;

                string            userid       = HttpContext.Current.User.Identity.GetUserId();
                List <CartEntity> CartItemList = new List <CartEntity>();
                CartItemList = JsonConvert.DeserializeObject <List <CartEntity> >(entities.UserInfos.FirstOrDefault(e => e.UserID == userid).Cart);

                //Kiểm tra xem sản phẩm đang định bỏ vào giỏ hàng có phải của chính mình hay không:
                var producttoCheck = entities.Products.Where(x => x.ProductID == pid).FirstOrDefault();
                if (producttoCheck.UserID == userid)
                {
                    return(Request.CreateResponse(HttpStatusCode.NotAcceptable, "Không được mua hàng của chính mình."));
                }

                //Kiểm tra xem sản phẩm đang định bỏ vào giỏ hàng có phải nhỏ hơn stock hay không:
                var checkCart = CartItemList.FirstOrDefault(x => x.productID == pid);
                if (checkCart != null)
                {
                    if (q + checkCart.quantity > producttoCheck.Stock)
                    {
                        return(Request.CreateResponse(HttpStatusCode.NotAcceptable, "Chỉ được đặt mua số lượng nhỏ hơn stock."));
                    }
                }

                if (q > producttoCheck.Stock)
                {
                    return(Request.CreateResponse(HttpStatusCode.NotAcceptable, "Chỉ được đặt mua số lượng nhỏ hơn stock."));
                }

                //Tìm thử xem có sẵn chưa, nếu có rồi thì chỉ cộng thêm số lượng
                bool flag = false;
                foreach (CartEntity item in CartItemList)
                {
                    if (item.productID == pid)
                    {
                        item.quantity = item.quantity + q;
                        flag          = true;
                    }
                }
                if (flag == false)
                {
                    CartItemList.Add(new CartEntity {
                        productID = pid, quantity = q
                    });
                }

                var entity = entities.UserInfos.FirstOrDefault(e => e.UserID == userid);
                entity.Cart = JsonConvert.SerializeObject(CartItemList);

                entities.SaveChanges();
            }
            return(Request.CreateResponse(HttpStatusCode.OK, "Đã thêm vào giỏ hàng"));
        }
예제 #19
0
 // GET api/values
 public HttpResponseMessage TestLoad()
 {
     //return User.Identity.GetUserName();
     using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
     {
         entities.Configuration.ProxyCreationEnabled = false;
         var a = entities.Products.Include("brands").ToString();
         return(Request.CreateErrorResponse(HttpStatusCode.OK, "not found"));
     }
 }
예제 #20
0
 // GET api/values/5
 public HttpResponseMessage Get(int id)
 {
     using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
     {
         entities.Configuration.ProxyCreationEnabled = false;
         int lastIDofOrder = entities.Orders.Max(x => x.OrderID);
         var invoice       = entities.OrderItems.Where(x => x.OrderID == lastIDofOrder).GroupBy(x => new { x.OrderID, x.Order.OrderDate, x.Order.AspNetUser.Id, x.Order.OrderNameofUser, x.Order.OrderPhoneNumber, x.Order.OrderAddress, x.Order.AspNetUser.UserName }).Select(y => new { orderID = y.Key.OrderID, orderDate = y.Key.OrderDate, orderUser = y.Key.UserName, orderUserID = y.Key.Id, orderNameofUser = y.Key.OrderNameofUser, orderAddress = y.Key.OrderAddress, orderPhoneNumber = y.Key.OrderPhoneNumber, orderItemIDs = y.Select(z => new { orderItemID = z.OrderItemID, orderItemState = z.OrderState, orderItemQuantity = z.Quantity, orderItemPrice = z.FinalPrice, itemID = z.Product.ProductID, productName = z.Product.ProductName, productImage = z.Product.ProductImage, shopName = entities.UserInfos.FirstOrDefault(c => c.UserID == z.ShopID).Name, shopPhoneNumber = entities.UserInfos.FirstOrDefault(c => c.UserID == z.ShopID).PhoneNumber, shopAddress = entities.UserInfos.FirstOrDefault(c => c.UserID == z.ShopID).HomeAddress, shopEmail = entities.UserInfos.FirstOrDefault(c => c.UserID == z.ShopID).Email }).ToList() }).ToList();
         return(Request.CreateResponse(HttpStatusCode.OK));
     }
 }
예제 #21
0
        public HttpResponseMessage SetToShipping([FromUri] int oid)
        {
            try
            {
                //Lát sau viết lại ràng buộc cho method này!!!
                using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
                {
                    entities.Configuration.ProxyCreationEnabled = false;
                    string currentUserID = User.Identity.GetUserId();

                    var    result      = entities.OrderItems.Include("Order").Include("Product").Where(x => x.OrderItemID == oid).FirstOrDefault();
                    string emailtoSend = entities.AspNetUsers.FirstOrDefault(x => x.Id == result.Order.UserID).Email;

                    if (result != null)
                    {
                        if (result.Product.UserID == currentUserID)
                        {
                            result.OrderState = "Shipping";
                            entities.SaveChanges();

                            //Gửi Email thông báo đã mua hàng
                            SmtpClient client = new SmtpClient();
                            client.Port                  = 587;
                            client.Host                  = "smtp.gmail.com";
                            client.EnableSsl             = true;
                            client.Timeout               = 10000;
                            client.DeliveryMethod        = SmtpDeliveryMethod.Network;
                            client.UseDefaultCredentials = false;
                            client.Credentials           = new System.Net.NetworkCredential("*****@*****.**", "hoahoa123");
                            MailMessage mm = new MailMessage("*****@*****.**", emailtoSend, "Tình trạng đơn hàng", "Sản phẩm có mã đặt hàng là: #" + result.OrderItemID + " đang được vận chuyển.");
                            mm.BodyEncoding = UTF8Encoding.UTF8;
                            mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
                            client.Send(mm);
                            //Hết phần gửi email.

                            return(Request.CreateResponse(HttpStatusCode.OK, "Đã chuyển sang Shipping"));
                        }
                        else
                        {
                            return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Không sửa được vì không phải chủ của sản phẩm này"));
                        }
                    }
                    else
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Không tìm thấy"));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
예제 #22
0
        public HttpResponseMessage LoadAllMyMerchantCompleteOrders([FromUri] string month = null, string year = null, string minTotalPrice = null, string maxTotalPrice = null)
        {
            try
            {
                using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
                {
                    entities.Configuration.ProxyCreationEnabled = false;
                    string uid        = User.Identity.GetUserId();
                    var    listOrders = entities.OrderItems.Where(x => x.Product.UserID == uid).GroupBy(x => new { x.OrderID, x.Order.OrderDate, x.Order.AspNetUser.Id, x.Order.OrderNameofUser, x.Order.OrderPhoneNumber, x.Order.OrderAddress, x.Order.AspNetUser.UserName, totalPrice = entities.OrderItems.Where(g => g.OrderID == x.OrderID && g.ShopID == x.ShopID).Sum(h => h.FinalPrice) }).Select(y => new { orderID = y.Key.OrderID, orderDate = y.Key.OrderDate, orderUser = y.Key.UserName, orderUserID = y.Key.Id, orderNameofUser = y.Key.OrderNameofUser, orderAddress = y.Key.OrderAddress, orderPhoneNumber = y.Key.OrderPhoneNumber, orderTotalPrice = y.Key.totalPrice, orderItemIDs = y.Select(z => new { orderItemID = z.OrderItemID, orderItemState = z.OrderState, orderItemQuantity = z.Quantity, orderItemPrice = z.FinalPrice, itemID = z.Product.ProductID, productName = z.Product.ProductName, productImage = z.Product.ProductImage }).ToList() }).ToList();
                    var    result     = listOrders.ToList();
                    foreach (var i in listOrders)
                    {
                        foreach (var j in i.orderItemIDs)
                        {
                            if (j.orderItemState == "Waiting" || j.orderItemState == "Shipping")
                            {
                                result.Remove(i);
                                break;
                            }
                        }
                    }
                    if (month != null)
                    {
                        int tempMonth = Convert.ToInt32(month);
                        result = result.Where(x => x.orderDate.Value.Month == tempMonth).ToList();
                    }

                    if (year != null)
                    {
                        int tempYear = Convert.ToInt32(year);
                        result = result.Where(x => x.orderDate.Value.Year == tempYear).ToList();
                    }

                    if (minTotalPrice != null)
                    {
                        int tempMinTotalPrice = Convert.ToInt32(minTotalPrice);
                        result = result.Where(x => x.orderTotalPrice >= tempMinTotalPrice).ToList();
                    }

                    if (maxTotalPrice != null)
                    {
                        int tempMaxTotalPrice = Convert.ToInt32(maxTotalPrice);
                        result = result.Where(x => x.orderTotalPrice <= tempMaxTotalPrice).ToList();
                    }

                    return(Request.CreateResponse(HttpStatusCode.OK, result));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
예제 #23
0
        public HttpResponseMessage Put(int id, [FromBody] ProductModel product)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
                }

                //Kiểm tra giá phải nhỏ hơn giá cũ
                if (product.Price > product.OldPrice)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Giá cũ phải cao hơn giá mới"));
                }

                using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
                {
                    entities.Configuration.ProxyCreationEnabled = false;
                    var entity = entities.Products.FirstOrDefault(e => e.ProductID == id);
                    if (entity == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.NotFound,
                                                           "Product with Id " + id.ToString() + " not found to update"));
                    }
                    else
                    {
                        if (entity.UserID == User.Identity.GetUserId())
                        {
                            entity.ProductTypeID = product.ProductTypeID;
                            entity.BrandID       = product.BrandID;
                            entity.ProductName   = product.ProductName;
                            entity.Detail        = product.Detail;
                            entity.Stock         = product.Stock;
                            entity.OldPrice      = product.OldPrice;
                            entity.Price         = product.Price;
                            entity.ProductImage  = product.ProductImage;

                            entities.SaveChanges();

                            return(Request.CreateResponse(HttpStatusCode.OK, "Đã sửa"));
                        }
                        else
                        {
                            return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Có lỗi xảy ra"));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
예제 #24
0
        public HttpResponseMessage Post([FromBody] ProductModel product)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
                }

                //Kiểm tra giá cũ có lớn hơn giá mới không
                if (product.Price > product.OldPrice)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Giá cũ phải cao hơn giá mới"));
                }

                using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
                {
                    entities.Configuration.ProxyCreationEnabled = false;
                    product.CreationDate = DateTime.Now;
                    product.UserID       = User.Identity.GetUserId();

                    //Kiểm tra xem có đang bị ban hay không
                    string currentUserID = User.Identity.GetUserId();
                    var    list          = entities.BanAccounts.Where(x => x.UserID == currentUserID && x.LiftDate > DateTime.Now).ToList();
                    if (list.Count != 0)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Bạn đang bị ban, lý do: " + list[0].Reason));
                    }
                    //Hết kiểm tra bị ban

                    Product newproduct = new Product();
                    newproduct.UserID        = product.UserID;
                    newproduct.ProductTypeID = product.ProductTypeID;
                    newproduct.BrandID       = product.BrandID;
                    newproduct.ProductName   = product.ProductName;
                    newproduct.Detail        = product.Detail;
                    newproduct.Stock         = product.Stock;
                    newproduct.ProductImage  = product.ProductImage;
                    newproduct.Price         = product.Price;
                    newproduct.OldPrice      = product.OldPrice;
                    newproduct.CreationDate  = DateTime.Now;

                    entities.Products.Add(newproduct);
                    entities.SaveChanges();
                    return(Request.CreateResponse(HttpStatusCode.OK, "POST OK"));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
예제 #25
0
        public HttpResponseMessage RateaProduct([FromUri] int pid, int r)
        {
            try
            {
                using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
                {
                    entities.Configuration.ProxyCreationEnabled = false;
                    string currentUserID = User.Identity.GetUserId();

                    //Kiểm tra r (điểm) phải >0 và < 10
                    if (r < 0 || r > 10)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadGateway, "Phải rate từ 0-> 10"));
                    }
                    //Kiểm tra xem người đó đã mua hàng hay chưa, nếu chưa mua thì không được rate
                    var checkBought = entities.OrderItems.Where(x => x.Order.UserID == currentUserID && x.ProductID == pid).FirstOrDefault();
                    if (checkBought == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Bạn chưa mua sản phẩm này nên không được đánh giá"));
                    }

                    //Kiểm tra người Rate có phải chủ của Product không. Chủ product ko hể rate sản phẩm của chính mình
                    string IDofProductOwner = entities.Products.FirstOrDefault(x => x.ProductID == pid).UserID;
                    if (currentUserID == IDofProductOwner)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadGateway, "Bạn không thể rate sản phẩm của chính mình"));
                    }

                    //Kiểm tra xem đã vote chưa, 1 người chỉ được vote sản phẩm 1 lần
                    var checkIfRated = entities.Ratings.FirstOrDefault(x => x.ProductID == pid && x.UserID == currentUserID);
                    if (checkIfRated != null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.NotAcceptable, "Bạn đã rate rồi"));
                    }

                    Rating newRating = new Rating();
                    newRating.ProductID = pid;
                    newRating.Rating1   = r;
                    newRating.UserID    = currentUserID;
                    entities.Ratings.Add(newRating);
                    entities.SaveChanges();
                    return(Request.CreateResponse(HttpStatusCode.OK, "POST OK"));
                }
            }
            catch
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadGateway, "Có lỗi xảy ra"));
            }
        }
예제 #26
0
 public HttpResponseMessage GetUserMailByUserID([FromUri] string uid)
 {
     try
     {
         using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
         {
             entities.Configuration.ProxyCreationEnabled = false;
             return(Request.CreateResponse(HttpStatusCode.OK, entities.AspNetUsers.FirstOrDefault(x => x.Id == uid).UserName));
         }
     }
     catch (Exception ex)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
     }
 }
예제 #27
0
 public HttpResponseMessage LoadAllBrands()
 {
     try
     {
         using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
         {
             entities.Configuration.ProxyCreationEnabled = false;
             return(Request.CreateResponse(HttpStatusCode.OK, entities.Brands.ToList()));
         }
     }
     catch (Exception ex)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
     }
 }
예제 #28
0
 public HttpResponseMessage LoadAllBanAccountInTime()
 {
     try
     {
         using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
         {
             entities.Configuration.ProxyCreationEnabled = false;
             var result = entities.BanAccounts.Where(x => x.LiftDate > DateTime.Now).ToList();
             return(Request.CreateResponse(HttpStatusCode.OK, result));
         }
     }
     catch (Exception ex)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
     }
 }
예제 #29
0
 public HttpResponseMessage GetAllUnreadReport()
 {
     try
     {
         using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
         {
             entities.Configuration.ProxyCreationEnabled = false;
             var result = entities.Reports.Where(x => x.IsRead == false).ToList();
             return(Request.CreateResponse(HttpStatusCode.OK, result));
         }
     }
     catch (Exception ex)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
     }
 }
예제 #30
0
 public HttpResponseMessage GetListOfAverageRatingListByProduct(string sort = null)
 {
     try
     {
         using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
         {
             entities.Configuration.ProxyCreationEnabled = false;
             var detailRatingByItem = entities.Ratings.GroupBy(x => new { x.ProductID, x.Product.ProductName }).Select(g => new { g.Key.ProductID, g.Key.ProductName, AverageRating = g.Average(x => x.Rating1), RatingTime = g.Count() }).OrderByDescending(x => x.AverageRating).ThenByDescending(x => x.RatingTime).ToList();
             return(Request.CreateResponse(HttpStatusCode.OK, detailRatingByItem));
         }
     }
     catch
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadGateway, "Có lỗi xảy ra"));
     }
 }