示例#1
0
 // GET: Auction/Rating
 public ActionResult Rating(RatingVM vm)
 {
     using (var ctx = new AuctionSiteDBEntities())
     {
         int  idcurrent = CurrentContext.GetCurUser().ID;
         bool check     = ctx.Ratings.Any(r => r.IDUser == vm.ID && r.IDUserRating == idcurrent);
         if (check == true)
         {
             TempData["mess"] = "You Have already rated for this seller!!!";
             return(RedirectToAction("ShowWin", "Auction"));
         }
         int  id   = vm.ID;
         User user = ctx.Users.Where(u => u.ID == id).FirstOrDefault <User>();
         if (vm.negativePoint == -1)
         {
             user.negativePoint++;
         }
         else
         {
             user.positivePoint++;
         }
         //save rating
         var rating = new Rating()
         {
             IDUser       = vm.ID,
             IDUserRating = CurrentContext.GetCurUser().ID,
         };
         ctx.Ratings.Add(rating);
         ctx.SaveChanges();
     }
     TempData["mess"] = "Thanks for your rating!!!";
     return(RedirectToAction("ShowWin", "Auction"));
 }
        public ActionResult Register(RegisterVM model)
        {
            if (!ModelState.IsValid)
            {
                ViewBag.ErrorMsg = "Incorrect CAPTCHA code!";
            }
            else
            {
                User u = new User
                {
                    Username   = model.f_Username,
                    Email      = model.f_Email,
                    Name       = model.f_Name,
                    Address    = model.f_Address,
                    Password   = StringUtils.Md5(model.f_RawPassword),
                    Permission = 0,
                    DOB        = DateTime.ParseExact(model.f_DOB, "d/M/yyyy", null)
                };

                using (var ctx = new AuctionSiteDBEntities())
                {
                    ctx.Users.Add(u);
                    ctx.SaveChanges();
                }
            }
            return(View());
        }
        public ActionResult Login(LoginVM model)
        {
            string encPwd = StringUtils.Md5(model.f_RawPassword);

            using (var ctx = new AuctionSiteDBEntities())
            {
                var user = ctx.Users.Where(u => u.Username == model.f_Username && u.Password == encPwd)
                           .FirstOrDefault();
                if (user != null)
                {
                    Session["isLogin"] = 1;
                    Session["user"]    = user;

                    if (model.Remember)
                    {
                        Response.Cookies["userId"].Value   = user.ID.ToString();
                        Response.Cookies["userId"].Expires = DateTime.Now.AddDays(7);
                    }

                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    ViewBag.ErrorMsg = "Login failed! check your information...";
                    return(View());
                }
            }
        }
示例#4
0
        public ActionResult WatchList()
        {
            using (var ctx = new AuctionSiteDBEntities())
            {
                var iduser = CurrentContext.GetCurUser().ID;
                var list   = (from p in ctx.Products
                              join f in ctx.FavoriteProducts
                              on p.ID equals f.IDProducts
                              where f.IDUsers == iduser
                              select new ProductVM
                {
                    ID = p.ID,
                    IDCat = p.IDCat,
                    Name = p.Name,
                    Description = p.Description,
                    StartPrice = p.StartPrice,
                    StepPrice = p.StepPrice,
                    EndPrice = p.EndPrice,
                    ExtendTime = p.ExtendTime,
                    EvaluationPoint = p.EvaluationPoint,
                    HighestKeeper = p.HighestKeeper,
                    TimePost = p.TimePost,
                    CurrentPrice = p.CurrentPrice,
                    UserID = p.UserID,
                    Bought = p.Bought,
                }).ToList();

                return(View(list));
            }
        }
示例#5
0
        // GET: Home
        public ActionResult Index()
        {
            List <Product> SetPrice = new List <Product>();

            using (var ctx = new AuctionSiteDBEntities())
            {
                var listget = ctx.Auctions.ToList();
                var listmax = ctx.Products.Where(p => p.Bought == false && (DateTime.Now <= EntityFunctions.AddDays(p.TimePost, p.IntervalTime))).OrderByDescending(p => p.PriceDisplay).ToList().Take(5);
                var listend = ctx.Products.Where(p => p.Bought == false && (DateTime.Now <= EntityFunctions.AddDays(p.TimePost, p.IntervalTime)))
                              .OrderBy(p => (EntityFunctions.DiffSeconds(DateTime.Now, EntityFunctions.AddDays(p.TimePost, p.IntervalTime)))).ToList().Take(5);
                var TopSetPriceList = listget.GroupBy(a => a.IDPro).OrderByDescending(a => a.Key).ToList().Take(5);
                foreach (var id in TopSetPriceList)
                {
                    Product pro = ctx.Products.Where(p => p.ID == id.Key && p.Bought == false).FirstOrDefault();
                    if (pro != null)
                    {
                        SetPrice.Add(pro);
                    }
                }

                HomeVM vm = new HomeVM();
                vm.MostSettingPrice = new List <Product>();
                vm.MaxPrice         = new List <Product>();
                vm.EndDate          = new List <Product>();
                vm.EndDate.AddRange(listend);
                vm.MostSettingPrice.AddRange(SetPrice);
                vm.MaxPrice.AddRange(listmax);
                return(View(vm));
            }
        }
示例#6
0
        public ActionResult ChangeInfo(User vm)
        {
            using (var dt = new AuctionSiteDBEntities())
            {
                string encPwd = StringUtils.Md5(vm.Password);
                var    list   = dt.Users.ToList();
                var    user   = dt.Users.Where(u => u.Password == encPwd && vm.ID == u.ID).FirstOrDefault();
                if (user == null)
                {
                    ViewBag.ErrorMsg = "wrong password!!!";
                    return(View(CurrentContext.GetCurUser()));
                }
                if (list.Any(u => u.Email == vm.Email && u.ID != vm.ID))
                {
                    ViewBag.ErrorMsg = "this email has been already used ";
                    return(View(CurrentContext.GetCurUser()));
                }
            }

            int id = CurrentContext.GetCurUser().ID;

            using (var ctx = new AuctionSiteDBEntities())
            {
                var user = ctx.Users.Where(u => u.ID == vm.ID).FirstOrDefault <User>();
                user.Email = vm.Email;
                user.Name  = vm.Name;
                ctx.SaveChanges();
                ViewBag.ErrorMsg = "Change info success!!!";
                return(View(CurrentContext.GetCurUser()));
            }
        }
示例#7
0
        public ActionResult Add(Product vm, HttpPostedFileBase Firstimg, HttpPostedFileBase Secondimg
                                , HttpPostedFileBase Thirdimg)
        {
            using (var ctx = new AuctionSiteDBEntities())
            {
                vm.CurrentPrice    = null;
                vm.HighestKeeper   = null;
                vm.EvaluationPoint = null;
                vm.TimePost        = DateTime.Now;
                ctx.Products.Add(vm);
                ctx.SaveChanges();

                if (Firstimg != null && Firstimg.ContentLength > 0 && (Secondimg != null && Secondimg.ContentLength > 0) &&
                    (Thirdimg != null && Thirdimg.ContentLength > 0))
                {
                    string spDirPath     = Server.MapPath("~/Img/products");
                    string targetDirPath = Path.Combine(spDirPath, vm.ID.ToString());
                    Directory.CreateDirectory(targetDirPath);

                    string mainFileName = Path.Combine(targetDirPath, "main.jpg");
                    Firstimg.SaveAs(mainFileName);

                    string mainFileName2 = Path.Combine(targetDirPath, "main2.jpg");
                    Secondimg.SaveAs(mainFileName2);

                    string mainFileName3 = Path.Combine(targetDirPath, "main3.jpg");
                    Thirdimg.SaveAs(mainFileName3);
                }

                var list = ctx.Categories.ToList();
                ViewBag.Categories = list;
            }

            return(View());
        }
        // GET: Account/AskPermission
        public ActionResult AskPermission()
        {
            var WaitingUser = new UsersAsking()
            {
                Username   = CurrentContext.GetCurUser().Username,
                Email      = CurrentContext.GetCurUser().Email,
                Name       = CurrentContext.GetCurUser().Name,
                AskingDate = DateTime.Now,
                IDUser     = CurrentContext.GetCurUser().ID,
            };

            using (var ctx = new AuctionSiteDBEntities())
            {
                var userwaiting = ctx.UsersAskings.Any(u => u.IDUser == WaitingUser.IDUser);
                if (userwaiting == true)
                {
                    ViewBag.exist = "You have already asked for selling permission for once!!!";
                }
                else
                {
                    ctx.UsersAskings.Add(WaitingUser);
                    ctx.SaveChanges();
                }
            }

            return(View());
        }
示例#9
0
        public ActionResult ChangePassword(User vm)
        {
            using (var dt = new AuctionSiteDBEntities())
            {
                string encPwd = StringUtils.Md5(vm.Password);
                var    list   = dt.Users.ToList();
                var    user   = dt.Users.Where(u => u.Password == encPwd && vm.ID == u.ID).FirstOrDefault();
                if (user == null)
                {
                    ViewBag.ErrorMsg = "Current password is wrong!!!";
                    return(View(CurrentContext.GetCurUser()));
                }
                if (vm.NewPassword != vm.NewPasswordAgain)
                {
                    ViewBag.ErrorMsg = "Check your new password!!!";
                    return(View(CurrentContext.GetCurUser()));
                }
            }

            using (var ctx = new AuctionSiteDBEntities())
            {
                var user = ctx.Users.Where(u => u.ID == vm.ID).FirstOrDefault <User>();
                user.Password = StringUtils.Md5(vm.NewPassword);
                ctx.SaveChanges();
                ViewBag.ErrorMsg = "Change Password success!!!";
                return(View(CurrentContext.GetCurUser()));
            }
        }
示例#10
0
 // GET: Products/ByCat
 public ActionResult ByCat(int?id)
 {
     if (id.HasValue == false)
     {
         return(RedirectToAction("Index", "Home"));
     }
     using (var ctx = new AuctionSiteDBEntities())
     {
         //check expired
         var listpros = ctx.Products.Where(p => (DateTime.Now > System.Data.Entity.DbFunctions.AddDays(p.TimePost, p.IntervalTime)))
                        .ToList();
         if (listpros.Count > 0)
         {
             foreach (Product pro in listpros)
             {
                 dynamic emailforwinner        = new Email("win");
                 dynamic emailforonwer         = new Email("owner");
                 dynamic emailforonwer_notsell = new Email("notsell");
                 pro.Bought = true;
                 var user      = ctx.Users.Where(u => u.ID == pro.lastuser).FirstOrDefault();
                 var userowner = ctx.Users.Where(u => u.ID == pro.UserID).FirstOrDefault();
                 if (pro.lastuser != null)
                 {
                     //create emails
                     //for winnner
                     emailforwinner.To      = user.Email;
                     emailforwinner.Name    = user.Name;
                     emailforwinner.ProName = pro.Name;
                     emailforwinner.price   = pro.PriceDisplay;
                     emailforwinner.Send();
                     //for onwer
                     emailforonwer.To      = userowner.Email;
                     emailforonwer.Name    = userowner.Name;
                     emailforonwer.ProName = pro.Name;
                     emailforonwer.price   = pro.PriceDisplay;
                     emailforwinner.Send();
                 }
                 //if no one pay attention for products lastuser == null
                 //for onwer
                 emailforonwer_notsell.To      = userowner.Email;
                 emailforonwer_notsell.Name    = userowner.Name;
                 emailforonwer_notsell.ProName = pro.Name;
                 emailforonwer_notsell.Send();
             }
         }
         ctx.SaveChanges();
         bool list    = ctx.Products.Any(p => p.Bought == false && p.IDCat == id);
         var  listpro = ctx.Products.Where(p => p.Bought == false && p.IDCat == id).ToList();
         //check if no product is found because all of them have been deleted at check expired
         if (list == true)
         {
             return(View(listpro));
         }
         else
         {
             return(View(model: null));
         }
     }
 }
示例#11
0
 public ActionResult SearchName(ProductVM vm)
 {
     using (var ctx = new AuctionSiteDBEntities())
     {
         var listpro = ctx.Products.Where(p => p.Name.Contains(vm.Name) && p.Bought == false).ToList();
         return(View(listpro));
     }
 }
 // GET: MCategories
 public ActionResult Index()
 {
     using (var ctx = new AuctionSiteDBEntities())
     {
         var list = ctx.Categories.ToList();
         return(View(list));
     }
 }
 // GET: Categories/ListOfCats
 public ActionResult ListOfCats()
 {
     using (var ctx = new AuctionSiteDBEntities())
     {
         var List = ctx.Categories.ToList();
         return(PartialView("ListOfCats", List));
     }
 }
示例#14
0
        // GET: Auction/BanUser
        public ActionResult BanUser(int iduser, int idpro)
        {
            dynamic emailkick = new Email("Kick");

            using (var ctx = new AuctionSiteDBEntities())
            {
                //get product
                var pro  = ctx.Products.Where(p => p.ID == idpro).FirstOrDefault();
                var user = ctx.Users.Where(u => u.ID == iduser).FirstOrDefault();
                var ban  = new BannedUser()
                {
                    IDProduct = idpro,
                    IDUser    = iduser,
                };
                //get onwer
                Auction currentowner = ctx.Auctions.Where(a => a.own == true && a.IDPro == idpro).FirstOrDefault();
                //create an email
                emailkick.To      = CurrentContext.GetCurUser().Email;
                emailkick.Name    = user.Name;
                emailkick.ProName = pro.Name;
                emailkick.Send();
                ctx.BannedUsers.Add(ban);
                ctx.SaveChanges();
                //check if we dont kick the onwer
                if (currentowner.IDUser != user.ID)
                {
                    return(RedirectToAction("SettedBid", "Auction", new { id = idpro }));
                }
            }
            using (var update = new AuctionSiteDBEntities())
            {
                var currentowner = update.Auctions.Where(a => a.own == true && a.IDPro == idpro).FirstOrDefault();
                currentowner.own = false;
                var secondMax = update.Auctions.OrderByDescending(a => a.MaxPrice)
                                .Where(p => p.IDPro == idpro)
                                .Skip(1).FirstOrDefault();
                //more than 1 price setting
                if (secondMax != null)
                {
                    secondMax.own = true;
                    //udpate maxprice of product
                    Product pro = update.Products.Where(p => p.ID == idpro).FirstOrDefault <Product>();
                    pro.PriceDisplay = secondMax.MaxPrice;
                    pro.lastuser     = secondMax.IDUser;
                    update.SaveChanges();
                }
                //if we just have 1 setting price for this product then second will be turnned into null
                else
                {
                    //udpate maxprice of product
                    Product pro = update.Products.Where(p => p.ID == idpro).FirstOrDefault <Product>();
                    pro.PriceDisplay = pro.StartPrice;
                    pro.lastuser     = null;
                    update.SaveChanges();
                }
            }
            return(RedirectToAction("SettedBid", "Auction", new { id = idpro }));
        }
示例#15
0
 public ActionResult ListProAdmin()
 {
     using (var ctx = new AuctionSiteDBEntities())
     {
         var listcat = ctx.Categories.ToList();
         ViewBag.Categories = listcat;
         return(View());
     }
 }
示例#16
0
 public ActionResult SearchMix(ProductVM vm)
 {
     using (var ctx = new AuctionSiteDBEntities())
     {
         var cat     = ctx.Categories.Where(c => c.ID == vm.IDCat).FirstOrDefault();
         var listpro = ctx.Products.Where(p => p.Name.Contains(vm.Name) && p.Bought == false && cat.Name.Contains(vm.Name)).ToList();
         return(View("SearchName", listpro));
     }
 }
示例#17
0
        public ActionResult ChangePassword()
        {
            int id = CurrentContext.GetCurUser().ID;

            using (var ctx = new AuctionSiteDBEntities())
            {
                var user = ctx.Users.Where(u => u.ID == id).FirstOrDefault();
                return(View(user));
            }
        }
示例#18
0
        // GET: Delete
        public ActionResult Delete()
        {
            using (var ctx = new AuctionSiteDBEntities())
            {
                var curnameuser = CurrentContext.GetCurUser().Username;
                var list        = ctx.Users.Where(u => u.Username != curnameuser).ToList();

                return(View(list));
            }
        }
示例#19
0
        public ActionResult Add()
        {
            using (var ctx = new AuctionSiteDBEntities())
            {
                var list = ctx.Categories.ToList();
                ViewBag.Categories = list;
            }

            return(View());
        }
 public ActionResult Edit(Category vm)
 {
     using (var ctx = new AuctionSiteDBEntities())
     {
         var      list        = ctx.Categories.ToList();
         Category CattoUpdate = list.Where(c => c.ID == vm.ID).FirstOrDefault <Category>();
         CattoUpdate.Name = vm.Name;
         ctx.SaveChanges();
         return(RedirectToAction("Index", "Home"));
     }
 }
示例#21
0
 public ActionResult InTime()
 {
     using (var ctx = new AuctionSiteDBEntities())
     {
         int Iduser = CurrentContext.GetCurUser().ID;
         var list   = ctx.Products.Where(p => ((p.UserID == Iduser) &&
                                               (DateTime.Now <= EntityFunctions.AddDays(p.TimePost, p.IntervalTime))))
                      .ToList();
         return(View(list));
     }
 }
示例#22
0
        // GET: MAccount
        public ActionResult WaitingUsers()
        {
            using (var ctx = new AuctionSiteDBEntities())
            {
                var list = (from u in ctx.Users
                            join us in ctx.UsersAskings
                            on u.ID equals us.IDUser
                            select us).ToList();

                return(View(list));
            }
        }
示例#23
0
 public ActionResult EditDes(Product vm)
 {
     using (var ctx = new AuctionSiteDBEntities())
     {
         var    maxID   = ctx.EditDes.Where(e => e.IDPro == vm.ID).Max(e => e.ID);
         EditDe pro     = ctx.EditDes.First(x => x.ID == maxID);
         string encoded = HttpUtility.HtmlDecode(pro.Content);
         var    tx      = new MvcHtmlString(encoded);
         ViewBag.raw = tx;
         return(View(pro));
     }
 }
示例#24
0
        public ActionResult Profile()
        {
            User   user           = CurrentContext.GetCurUser();
            double total_percents = Math.Abs(user.positivePoint / (user.positivePoint + user.negativePoint)) * 100;

            ViewBag.Point = total_percents;
            using (var ctx = new AuctionSiteDBEntities())
            {
                var iduser      = CurrentContext.GetCurUser().ID;
                var list_rating = ctx.Ratings.Where(p => p.IDUser == iduser).ToList();
                return(View());
            }
        }
示例#25
0
 // Get: Accept
 public ActionResult Deny(User vm)
 {
     using (var ctx = new AuctionSiteDBEntities())
     {
         var user = new UsersAsking {
             ID = vm.ID
         };
         ctx.UsersAskings.Attach(user);
         ctx.UsersAskings.Remove(user);
         ctx.SaveChanges();
         return(RedirectToAction("WaitingUsers", "MAccount"));
     }
 }
        public ActionResult Delete(Category vm)
        {
            using (var ctx = new AuctionSiteDBEntities())
            {
                var cat = new Category {
                    ID = vm.ID
                };
                ctx.Categories.Attach(cat);
                ctx.Categories.Remove(cat);
                ctx.SaveChanges();

                return(RedirectToAction("Index", "Home"));
            }
        }
        public ActionResult Add(Category vm)
        {
            using (var ctx = new AuctionSiteDBEntities())
            {
                var cat = new Category()
                {
                    Name = vm.Name,
                };

                ctx.Categories.Add(cat);
                ctx.SaveChanges();
                return(RedirectToAction("Index", "MCategories"));
            }
        }
        // GET: Products/ByCat
        public ActionResult ByCat(int?id)
        {
            if (id.HasValue == false)
            {
                return(RedirectToAction("Index", "Home"));
            }

            using (var ctx = new AuctionSiteDBEntities())
            {
                var list = ctx.Products.Where(p => p.IDCat == id)
                           .ToList();
                return(View(list));
            }
        }
示例#29
0
        public ActionResult Delete(User vm)
        {
            using (var ctx = new AuctionSiteDBEntities())
            {
                var user = new User {
                    ID = vm.ID
                };
                ctx.Users.Attach(user);
                ctx.Users.Remove(user);
                ctx.SaveChanges();

                return(View());
            }
        }
        // GET: Products/Details
        public ActionResult Details(int?id)
        {
            if (id.HasValue == false)
            {
                return(RedirectToAction("Index", "Home"));
            }

            using (var ctx = new AuctionSiteDBEntities())
            {
                var model = ctx.Products
                            .Where(p => p.ID == id)
                            .FirstOrDefault();

                return(View(model));
            }
        }