Пример #1
0
        public ActionResult QuestsDetail(int id, string action, int ThingId = 0)
        {
            using (SSDBEntities db = new SSDBEntities())
            {
                //找到id对应的Quests
                Quests q = db.Quests.Where(x => x.Id == id).FirstOrDefault();
                switch (action)
                {
                case "确认送达":
                    //找到匹配的ThingId
                    ThingsQuests tq  = db.ThingsQuests.Where(x => x.QuestId == id).FirstOrDefault();
                    var          tId = tq.ThingId;
                    //找到ThingId对应的Things
                    Things t = db.Things.Where(x => x.Id == tId).FirstOrDefault();
                    //修改Things状态
                    t.Status          = "捐赠已成功";
                    db.Entry(t).State = EntityState.Modified;
                    //修改Quests状态
                    q.Status          = "受助已成功";
                    db.Entry(q).State = EntityState.Modified;
                    //修改信誉评价
                    Assess tu = db.Assess.Where(x => x.UserId == t.DonatorId).FirstOrDefault();
                    Assess qu = db.Assess.Where(x => x.UserId == q.ReceiverId).FirstOrDefault();
                    tu.CreditPoint += 5;
                    tu.CreditLevel  = CreditFunction.GetCreditLevel(tu.CreditPoint.Value);
                    tu.DonateNum++;
                    qu.CreditPoint += 1;
                    qu.CreditLevel  = CreditFunction.GetCreditLevel(qu.CreditPoint.Value);
                    qu.ReceiveNum++;
                    //执行操作
                    db.SaveChanges();
                    return(RedirectToAction("UploadComment", new { id = t.Id }));

                case "删除":
                    //修改受助方信誉评价
                    if (q.Status == "等待受助中")
                    {
                        var a = db.Assess.Where(x => x.UserId == q.ReceiverId).FirstOrDefault();
                        a.CreditPoint    -= 2;
                        a.CreditLevel     = CreditFunction.GetCreditLevel(a.CreditPoint.Value);
                        db.Entry(a).State = EntityState.Modified;
                    }
                    //从数据库中移除Quests元组
                    db.Quests.Remove(q);
                    db.SaveChanges();
                    return(RedirectToAction("MyQuestsList"));

                case "评价物品":
                    return(RedirectToAction("UploadComment", new { id = ThingId }));

                case "返回":
                    //跳转至“我的受助请求”
                    return(RedirectToAction("MyQuestsList"));
                }
                return(View(q));
            }
        }
Пример #2
0
        public ActionResult Register(RegisterViewModel model)
        {
            //模型错误返回错误模型的Register视图
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            //获取注册表单的用户名和密码
            string username = model.Username;
            string password = model.Password;

            using (SSDBEntities db = new SSDBEntities())
            {
                //若用户名重复,则返回用户名已注册报错
                if (db.Users.Where(x => x.Username == username).FirstOrDefault() != null)
                {
                    ModelState.AddModelError("", "用户名已注册");
                    return(View(model));
                }
                //新建Users元组
                var u = new Users();
                u.Username = username;
                u.Password = password;
                u.RegTime  = DateTime.Now;
                u.QQ       = model.QQ;
                u.Province = model.Province;
                u.School   = model.School;
                u.Sex      = model.Sex;
                u.IsAdmin  = model.isAdmin;
                u.Email    = model.Email;
                db.Users.Add(u);
                db.SaveChanges();

                //新建Assess元组
                var a = new Assess();
                a.UserId      = u.UserId;
                a.CreditLevel = 1;
                a.CheckedNum  = 0;
                a.CreditPoint = 0;
                a.DonateNum   = 0;
                a.ReceiveNum  = 0;
                a.Limit       = 1;
                db.Assess.Add(a);
                db.SaveChanges();
            }
            //注册成功跳转至登录页面
            return(RedirectToAction("Login"));
        }
Пример #3
0
        public ActionResult UploadComment(UploadCommentViewModel model, int id)
        {
            int usrId = (int)HttpContext.Session["usrId"];

            if (ModelState.IsValid)
            {
                using (SSDBEntities db = new SSDBEntities())
                {
                    Comments c = new Comments();
                    c.CommentTime    = DateTime.Now;
                    c.NewScore       = model.NewScore;
                    c.ReceiverId     = usrId;
                    c.SimilarScore   = model.SimilarScore;
                    c.Text           = model.Text;
                    c.ThingId        = id;
                    c.UsefulScore    = model.UsefulScore;
                    c.BeautifulScore = model.BeautifulScore;
                    c.SpeedScore     = model.SpeedScore;
                    db.Comments.Add(c);

                    Assess a = db.Assess.Where(x => x.UserId == usrId).FirstOrDefault();
                    a.CreditPoint    += 1;
                    a.CreditLevel     = CreditFunction.GetCreditLevel(a.CreditPoint.Value);
                    db.Entry(a).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }
            else
            {
                return(View(model));
            }
            return(RedirectToAction("MyQuestsList"));
        }
Пример #4
0
        public ActionResult ThingsDetail(int id, string action)
        {
            using (SSDBEntities db = new SSDBEntities())
            {
                //找出对应id的捐赠物品
                Things t = db.Things.Where(x => x.Id == id).FirstOrDefault();
                switch (action)
                {
                case "删除":
                    //修改捐赠者信誉评价
                    if (t.Status == "等待受助中")
                    {
                        var tu = db.Assess.Where(x => x.UserId == t.DonatorId).FirstOrDefault();
                        tu.CreditPoint    -= 2;
                        tu.CreditLevel     = CreditFunction.GetCreditLevel(tu.CreditPoint.Value);
                        db.Entry(tu).State = EntityState.Modified;
                    }
                    //移除Things元组
                    db.Things.Remove(t);
                    db.SaveChanges();
                    return(RedirectToAction("MyThingsList"));

                case "返回":
                    //跳转至“我的捐赠物品”
                    return(RedirectToAction("MyThingsList"));;
                }
                return(View(t));
            }
        }
Пример #5
0
        public ActionResult UploadQuests(UploadQuestsViewModel model, int?tId)
        {
            //获取当前用户的Id
            int usrId = (int)HttpContext.Session["usrId"];
            int qId   = 0;

            if (ModelState.IsValid)
            {
                //新建Quests
                Quests q = new Quests();
                q.ReceiverId  = usrId;
                q.Name        = model.qName;
                q.Type        = model.qType;
                q.Detail      = model.qDetail;
                q.ReleaseTime = DateTime.Now;
                q.Status      = tId != null ? "已接受受助" : "正在审核中";
                //向数据库新建元组,并获取新Quests的id
                using (SSDBEntities db = new SSDBEntities())
                {
                    db.Quests.Add(q);
                    db.SaveChanges();
                    qId = q.Id;
                }
                //如果当前有匹配捐赠物品,再新建一条匹配元组
                if (tId != null)
                {
                    //新建ThingsQuests
                    ThingsQuests tq = new ThingsQuests();
                    tq.ThingId = tId.Value;
                    tq.QuestId = qId;
                    tq.Time    = DateTime.Now;
                    //向数据库新建元组
                    using (SSDBEntities db = new SSDBEntities())
                    {
                        db.ThingsQuests.Add(tq);

                        Things t = db.Things.Where(x => x.Id == tId.Value).FirstOrDefault();
                        t.Status          = "已接受捐赠";
                        db.Entry(t).State = EntityState.Modified;
                        db.SaveChanges();
                    }
                }
                //提交成功,跳转至用户主页
                return(RedirectToAction("MyQuestsList"));
            }
            //模型报错,返回当前页面
            return(RedirectToAction("UploadQuests", new { id = tId }));
        }
Пример #6
0
 public ActionResult EditManage(EditManageViewModel model)
 {
     if (ModelState.IsValid)
     {
         //获取当前用户id
         int usrId = (int)HttpContext.Session["usrId"];
         using (SSDBEntities db = new SSDBEntities())
         {
             var u = db.Users.Where(x => x.UserId == usrId).FirstOrDefault();
             u.Province        = model.Province;
             u.School          = model.School;
             u.QQ              = model.QQ;
             u.Sex             = model.Sex;
             u.Email           = model.Email;
             db.Entry(u).State = EntityState.Modified;
             db.SaveChanges();
         }
         return(RedirectToAction("Manage"));
     }
     return(View(model));
 }
Пример #7
0
        public ActionResult QuestsDetail(int id, string action, string reason)
        {
            int usrId = (int)HttpContext.Session["usrId"];

            using (SSDBEntities db = new SSDBEntities())
            {
                switch (action)
                {
                case "通过":
                    //新建Check元组
                    Checks c1 = new Checks();
                    c1.AdminId      = usrId;
                    c1.CheckedTime  = DateTime.Now;
                    c1.RefuseReason = "";
                    c1.Result       = 1;
                    db.Checks.Add(c1);
                    db.SaveChanges();
                    //找出对应id的受助请求
                    var q1 = db.Quests.Where(x => x.Id == id).FirstOrDefault();
                    //修改受助请求的状态
                    q1.Status          = "等待受助中";
                    q1.CheckId         = c1.Id;
                    db.Entry(q1).State = EntityState.Modified;

                    //修改受助方的信誉评价
                    var u1 = db.Assess.Where(x => x.UserId == q1.ReceiverId).FirstOrDefault();
                    u1.CreditPoint += 2;    //信誉点数+2
                    u1.CreditLevel  = CreditFunction.GetCreditLevel(u1.CreditPoint.Value);
                    u1.CheckedNum++;
                    db.Entry(u1).State = EntityState.Modified;
                    db.SaveChanges();


                    break;

                case "提交":
                    //新建Check元组
                    Checks c2 = new Checks();
                    c2.AdminId      = usrId;
                    c2.CheckedTime  = DateTime.Now;
                    c2.RefuseReason = reason;
                    c2.Result       = 0;
                    db.Checks.Add(c2);
                    db.SaveChanges();
                    //找出对应id的受助请求
                    var q2 = db.Quests.Where(x => x.Id == id).FirstOrDefault();
                    //修改受助请求的状态
                    q2.Status          = "审核未通过";
                    q2.CheckId         = c2.Id;
                    db.Entry(q2).State = EntityState.Modified;

                    //修改受助方的信誉评价
                    var u2 = db.Assess.Where(x => x.UserId == q2.ReceiverId).FirstOrDefault();
                    u2.CreditPoint    -= 2; //信誉点数-2
                    u2.CreditLevel     = CreditFunction.GetCreditLevel(u2.CreditPoint.Value);
                    db.Entry(u2).State = EntityState.Modified;
                    db.SaveChanges();

                    break;

                case "取消":
                    break;
                }
            }
            //跳转至请求列表
            return(RedirectToAction("CheckQuests"));
        }
Пример #8
0
        public ActionResult ThingsDetail(int id, string action, string reason)
        {
            int usrId = (int)HttpContext.Session["usrId"];

            using (SSDBEntities db = new SSDBEntities())
            {
                switch (action)
                {
                case "通过":
                    //新建Check元组
                    Checks c1 = new Checks();
                    c1.AdminId      = usrId;
                    c1.CheckedTime  = DateTime.Now;
                    c1.RefuseReason = "";
                    c1.Result       = 1;
                    db.Checks.Add(c1);
                    db.SaveChanges();

                    //找出对应id的捐赠物品
                    var t1 = db.Things.Where(x => x.Id == id).FirstOrDefault();
                    //修改捐赠物品的状态
                    t1.Status          = "物品闲置中";
                    t1.CheckId         = c1.Id;
                    db.Entry(t1).State = EntityState.Modified;


                    //修改捐赠者的信誉评价
                    var u1 = db.Assess.Where(x => x.UserId == t1.DonatorId).FirstOrDefault();
                    u1.CreditPoint += 2;    //信誉点数+2
                    u1.CreditLevel  = CreditFunction.GetCreditLevel(u1.CreditPoint.Value);
                    u1.CheckedNum++;
                    db.Entry(u1).State = EntityState.Modified;
                    db.SaveChanges();


                    break;

                case "提交":
                    //新建Check元组
                    Checks c2 = new Checks();
                    c2.AdminId      = usrId;
                    c2.CheckedTime  = DateTime.Now;
                    c2.RefuseReason = reason;
                    c2.Result       = 0;
                    db.Checks.Add(c2);
                    db.SaveChanges();

                    //找出对应id的捐赠物品
                    var t2 = db.Things.Where(x => x.Id == id).FirstOrDefault();
                    //修改捐赠物品的状态
                    t2.Status          = "审核未通过";
                    t2.CheckId         = c2.Id;
                    db.Entry(t2).State = EntityState.Modified;

                    //修改捐赠者的信誉评价
                    var u2 = db.Assess.Where(x => x.UserId == t2.DonatorId).FirstOrDefault();
                    u2.CreditPoint    -= 2; //信誉点数-2
                    u2.CreditLevel     = CreditFunction.GetCreditLevel(u2.CreditPoint.Value);
                    db.Entry(u2).State = EntityState.Modified;
                    db.SaveChanges();

                    break;

                case "取消":
                    break;
                }
            }
            //跳转至物品列表
            return(RedirectToAction("CheckThings"));
        }
Пример #9
0
        public ActionResult UploadThings(UploadThingsViewModel model, int?qId)
        {
            //获取当前用户的Id
            int usrId = (int)HttpContext.Session["usrId"];
            int tId   = 0;

            if (ModelState.IsValid)
            {
                //新建Things
                Things t = new Things();
                t.DonatorId   = usrId;
                t.Name        = model.tName;
                t.Type        = model.tType;
                t.Detail      = model.tDetail;
                t.ReleaseTime = DateTime.Now;
                t.Status      = qId != null ? "已接受捐赠" : "正在审核中";//如果当前有匹配受助请求,则跳过审核
                //文件存储到目录下
                foreach (var imgFile in model.Image)
                {
                    if (imgFile != null && imgFile.ContentLength > 0)
                    {
                        string extension = Path.GetExtension(imgFile.FileName);
                        if (extension == ".jpg" || extension == ".png" || extension == ".gif")
                        {
                            string phicyPath = PublicFunction.GetPhicyPath();
                            //创建Upload文件夹,如果有则不创建
                            Directory.CreateDirectory(phicyPath);
                            //文件名与路径
                            var fileName = Path.GetFileName(imgFile.FileName);
                            var filePath = phicyPath + fileName;
                            //防止文件重名
                            while (System.IO.File.Exists(filePath))
                            {
                                Random rand = new Random();
                                fileName = rand.Next().ToString() + "-" + fileName;
                                filePath = phicyPath + fileName;
                            }
                            //存储文件到文件目录
                            imgFile.SaveAs(filePath);
                            //计算图片的哈希值
                            t.ImageHash = MainHash(filePath);
                            //保存提交的图片URL至数据库
                            t.ImageUrl = fileName;
                        }
                        else
                        {
                            ModelState.AddModelError("Image", "请上传正确格式的图片(.jpg .png .gif)");
                            return(View(model));
                        }
                    }
                }
                //向数据库新建元组,并获取新Things的id
                using (SSDBEntities db = new SSDBEntities())
                {
                    db.Things.Add(t);
                    db.SaveChanges();
                    tId = t.Id;
                }
                //如果当前有匹配受助请求,再新建一条匹配元组
                //并改变受助请求状态
                if (qId != null)
                {
                    //新建ThingsQuests
                    ThingsQuests tq = new ThingsQuests();
                    tq.ThingId = tId;
                    tq.QuestId = qId.Value;
                    tq.Time    = DateTime.Now;
                    //向数据库新建元组,改变受助请求状态
                    using (SSDBEntities db = new SSDBEntities())
                    {
                        db.ThingsQuests.Add(tq);

                        Quests q = db.Quests.Where(x => x.Id == qId.Value).FirstOrDefault();
                        q.Status          = "已接受受助";
                        db.Entry(q).State = EntityState.Modified;
                        db.SaveChanges();
                    }
                }
                //提交成功,跳转至用户主页
                return(RedirectToAction("MyThingsList"));
            }
            //模型报错,返回当前页面
            return(RedirectToAction("UploadThings", new { id = qId }));
        }