Exemplo n.º 1
0
        public ActionResult DevEditPost(DevEditViewModel editVm)
        {
            var repo     = new Repository();
            var original = GetDevEditViewModel(editVm.Id);

            original.Message = editVm.Message;
            var    asc = new WebClient().DownloadData(repo.GetASCLink(editVm.Id));
            string extracted;

            if (!CryptoHelper.VerifySig(asc, editVm.Message, out extracted))
            {
                ModelState.AddModelError("Message", "Incorrectly signed");
            }
            else
            {
                byte[] hash = null;
                using (SHA256 sha = new SHA256Managed())
                {
                    hash = sha.ComputeHash(Encoding.UTF8.GetBytes(extracted));
                }
                if (repo.SaveHash(hash))
                {
                    repo.UpdateDevViewModel(original);
                    return(RedirectToAction("Dev", "Main", new
                    {
                        devId = editVm.Id
                    }));
                }
                else
                {
                    ModelState.AddModelError("Message", "You can't replay an old message");
                }
            }
            return(View("DevEdit", original));
        }
Exemplo n.º 2
0
        public void UpdateDevViewModel(DevEditViewModel dev)
        {
            var bytes   = Encoding.UTF8.GetBytes(dev.Message);
            var sigBlob = GetSigBlob(dev.Id);

            //hashBlob.Properties.ContentEncoding = "text/html; charset=UTF-8";
            sigBlob.UploadFromByteArray(bytes, 0, bytes.Length);
        }
Exemplo n.º 3
0
        public ActionResult DevEdit(string id)
        {
            if (!ViewBag.IsAdmin)
            {
                return(RedirectToAction("Index", "Home"));
            }

            WdContext.SiteMapMenu.ActionMenu.Name = "编辑监测点";
            var model = new DevEditViewModel();

            if (string.IsNullOrWhiteSpace(id))
            {
                WdContext.SiteMapMenu.ActionMenu.Name = "新增监测点";
                model.Id         = -1;
                model.IsNew      = true;
                model.StartTime  = DateTime.Now;
                model.PreEndTime = DateTime.Now;
                model.EndTime    = DateTime.Now;
            }
            else
            {
                var dev = DbContext.T_Devs.First(item => item.Id.ToString() == id);
                model.Id         = dev.Id;
                model.DevCode    = dev.DevCode;
                model.StartTime  = dev.StartTime;
                model.PreEndTime = dev.PreEndTime;
                model.EndTime    = dev.EndTime;
                model.DevStatus  = dev.DevStatus;
                model.StatId     = int.Parse(dev.StatId);
                model.VideoUrl   = dev.VideoURL;

                var devAddr = DbContext.T_DevAddr.First(obj => obj.DevId == dev.Id).NodeId;

                model.Addr = BitConverter.ToString(devAddr).Replace("-", string.Empty);
            }

            ViewBag.ReturnUrl = "/Admin/DevManage";

            model.StatList = new SelectList(DbContext.T_Stats, "Id", "StatName", model.StatId);

            var statusList = new List <SelectListItem>
            {
                new SelectListItem()
                {
                    Text  = "是",
                    Value = "1"
                },
                new SelectListItem()
                {
                    Text  = "否",
                    Value = "0"
                }
            };

            model.StatusLIst = new SelectList(statusList, "Value", "Text", model.DevStatus);

            return(View(model));
        }
Exemplo n.º 4
0
        private static DevEditViewModel GetDevEditViewModel(string devId)
        {
            var repo   = new Repository();
            var vm     = repo.GetDevViewModel(devId);
            var editVm = new DevEditViewModel();

            editVm.Id           = vm.Id;
            editVm.FriendlyName = vm.FriendlyName;
            editVm.MessageLink  = vm.MessageLink;
            editVm.ASCLink      = vm.ASCLink;
            if (vm.Message != null)
            {
                editVm.Message = repo.GetSig(editVm.Id);
            }
            editVm.SignatureSample = repo.GetSigLink("zsample");
            editVm.ResultSample    = "/Opinion/zsample";
            return(editVm);
        }
Exemplo n.º 5
0
        public ActionResult DevEdit(DevEditViewModel model)
        {
            if (!ViewBag.IsAdmin)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var dev = model.Id == -1 ? new T_Devs() : DbContext.T_Devs.First(item => item.Id == model.Id);

            dev.DevCode    = model.DevCode;
            dev.StartTime  = model.StartTime;
            dev.PreEndTime = model.PreEndTime;
            dev.EndTime    = model.EndTime;
            dev.VideoURL   = model.VideoUrl;
            dev.StatId     = model.StatId.ToString();
            dev.DevStatus  = model.DevStatus;


            if (model.Id == -1)
            {
                DbContext.T_Devs.Add(dev);
                DbContext.SaveChanges();
                var addr = new T_DevAddr
                {
                    DevId  = DbContext.T_Devs.First(obj => obj.DevCode == model.DevCode).Id,
                    NodeId = Global.StringToHexByte(model.Addr)
                };
                DbContext.T_DevAddr.Add(addr);
            }
            else
            {
                DbContext.T_Devs.Add(dev);
            }


            DbContext.SaveChanges();

            return(RedirectToAction("DevManage", "Admin"));
        }