public override void Validate()
        {
            if (DpType == DpTypeEnum.User)
            {
                if (string.IsNullOrEmpty(Entity.UserCode))
                {
                    MSD.AddModelError("Entity.UserCode", Localizer["Validate.{0}required", Localizer["_Admin.Account"]]);
                }
                else
                {
                    var user = DC.Set <FrameworkUser>().Where(x => x.ITCode == Entity.UserCode).FirstOrDefault();
                    if (user == null)
                    {
                        MSD.AddModelError("Entity.UserCode", Localizer["Sys.CannotFindUser", Entity.UserCode]);
                    }
                }
            }
            else
            {
                if (string.IsNullOrEmpty(Entity.GroupCode))
                {
                    MSD.AddModelError("Entity.GroupId", Localizer["Validate.{0}required", Localizer["_Admin.Group"]]);
                }
            }

            base.Validate();
        }
Exemple #2
0
        /// <summary>
        /// 物理删除,对于普通的TopBasePoco和Delete操作相同,对于PersistPoco则进行真正的删除。子类如有自定义操作应重载本函数
        /// </summary>
        public virtual void DoRealDelete()
        {
            var pros = typeof(TModel).GetProperties();
            //如果包含附件,则先删除附件
            var fa = pros.Where(x => x.PropertyType == typeof(FileAttachment)).ToList();

            foreach (var f in fa)
            {
                if (f.GetValue(Entity) is FileAttachment file)
                {
                    if (file.SaveFileMode == SaveFileModeEnum.Local && !string.IsNullOrEmpty(file.Path))
                    {
                        Utils.DeleteFile(file.Path);
                    }
                    FileAttachmentData fd = new FileAttachmentData()
                    {
                        ID = file.ID
                    };
                    DC.DeleteEntity(fd);
                    DC.DeleteEntity(file);
                }
            }
            DC.DeleteEntity(Entity);
            try
            {
                DC.SaveChanges();
            }
            catch (Exception)
            {
                MSD.AddModelError("", "数据使用中,无法删除");
            }
        }
        public override void Validate()
        {
            if (DpType == DpTypeEnum.User)
            {
                if (string.IsNullOrEmpty(UserItCode))
                {
                    MSD.AddModelError("UserItCode", "用户为必填项");
                }
                else
                {
                    var user = DC.Set <FrameworkUserBase>().Where(x => x.ITCode == UserItCode).FirstOrDefault();
                    if (user == null)
                    {
                        MSD.AddModelError("UserItCode", "无法找到账号为" + UserItCode + "的用户");
                    }
                    else
                    {
                        Entity.UserId = user.ID;
                    }
                }
            }
            else
            {
                if (Entity.GroupId == null)
                {
                    MSD.AddModelError("Entity.GroupId", "用户组为必填项");
                }
            }

            base.Validate();
        }
 /// <summary>
 /// 物理删除,对于普通的TopBasePoco和Delete操作相同,对于PersistPoco则进行真正的删除。子类如有自定义操作应重载本函数
 /// </summary>
 public virtual void DoRealDelete()
 {
     try
     {
         DC.DeleteEntity(Entity);
         DC.SaveChanges();
         var pros = typeof(TModel).GetProperties();
         //如果包含附件,则先删除附件
         var fa = pros.Where(x => x.PropertyType == typeof(FileAttachment)).ToList();
         foreach (var f in fa)
         {
             if (f.GetValue(Entity) is FileAttachment file)
             {
                 FileAttachmentVM ofa = new FileAttachmentVM();
                 ofa.CopyContext(this);
                 ofa.SetEntityById(file.ID);
                 ofa.DoDelete();
             }
         }
     }
     catch (Exception e)
     {
         MSD.AddModelError("", "数据使用中,无法删除");
     }
 }
Exemple #5
0
        private void ConnectionServer()
        {
            _cedaSubscribe.OnCedaMessage += new Action <com.adaptiveMQ2.message.Message>(_cedaSubscribe_OnCedaMessage);


            _clientInfo = new ClientInfo();
            _clientInfo.setAddress(ip, port);
            _clientInfo.setUser("monitor", "monitor");
            _clientInfo.Protocol = ClientInfo.PROTOCOL_TCP;

            ThreadPool.QueueUserWorkItem(o =>
            {
                _cedaSubscribe.Connect(_clientInfo);
                if (_cedaSubscribe == null)
                {
                    return;
                }
                if (_cedaSubscribe.IsConnected)
                {
                    msd = getMSD();

                    craeteNodeLine();
                    _cedaSubscribe.SubscribeWithImage("YM.M.SI.*", svrId);
                    _cedaSubscribe.Subscribe("YM.M.W.*");
                }
            });
        }
Exemple #6
0
        public override void DoAdd()
        {
            using (var transaction = DC.BeginTransaction())
            {
                try
                {
                    base.DoAdd();
                    //添加到账记录后解锁任务
                    var Tasks = DC.Set <VOS_Task>().Where(x => x.PlanId == Entity.Plan_noId);
                    foreach (var task in Tasks)
                    {
                        task.IsLock     = true;
                        task.UnlockerId = LoginUserInfo.Id;
                        task.UnlockTime = DateTime.Now;
                        DC.Set <VOS_Task>().Update(task);
                    }
                    DC.SaveChanges();
                    transaction.Commit();
                }

                catch (Exception)
                {
                    transaction.Rollback();
                    MSD.AddModelError("123", "添加失败");
                }
            }
        }
Exemple #7
0
        public override void Validate()
        {
            if (DpType == DpTypeEnum.User)
            {
                if (string.IsNullOrEmpty(UserItCode))
                {
                    MSD.AddModelError("UserItCode", Program._localizer["{0}required", Program._localizer["Account"]]);
                }
                else
                {
                    var user = DC.Set <FrameworkUserBase>().Where(x => x.ITCode == UserItCode).FirstOrDefault();
                    if (user == null)
                    {
                        MSD.AddModelError("UserItCode", Program._localizer["CannotFindUser", UserItCode]);
                    }
                    else
                    {
                        Entity.UserId = user.ID;
                    }
                }
            }
            else
            {
                if (Entity.GroupId == null)
                {
                    MSD.AddModelError("Entity.GroupId", Program._localizer["{0}required", Program._localizer["Group"]]);
                }
            }

            base.Validate();
        }
Exemple #8
0
 public virtual async Task DoDeleteAsync()
 {
     //如果是PersistPoco,则把IsValid设为false,并不进行物理删除
     if (typeof(TModel).GetTypeInfo().IsSubclassOf(typeof(PersistPoco)))
     {
         (Entity as PersistPoco).IsValid    = false;
         (Entity as PersistPoco).UpdateTime = DateTime.Now;
         (Entity as PersistPoco).UpdateBy   = LoginUserInfo?.ITCode;
         DC.UpdateProperty(Entity, "IsValid");
         DC.UpdateProperty(Entity, "UpdateTime");
         DC.UpdateProperty(Entity, "UpdateBy");
         try
         {
             await DC.SaveChangesAsync();
         }
         catch (DbUpdateException)
         {
             MSD.AddModelError("", Program._localizer["DeleteFailed"]);
         }
     }
     //如果是普通的TopBasePoco,则进行物理删除
     else if (typeof(TModel).GetTypeInfo().IsSubclassOf(typeof(TopBasePoco)))
     {
         DoRealDelete();
     }
 }
Exemple #9
0
 /// <summary>
 /// 物理删除,对于普通的TopBasePoco和Delete操作相同,对于PersistPoco则进行真正的删除。子类如有自定义操作应重载本函数
 /// </summary>
 public virtual void DoRealDelete()
 {
     try
     {
         List <Guid> fileids = new List <Guid>();
         var         pros    = typeof(TModel).GetProperties();
         //如果包含附件,则先删除附件
         var fa = pros.Where(x => x.PropertyType == typeof(FileAttachment) || typeof(TopBasePoco).IsAssignableFrom(x.PropertyType)).ToList();
         foreach (var f in fa)
         {
             if (f.GetValue(Entity) is FileAttachment file)
             {
                 fileids.Add(file.ID);
             }
             f.SetValue(Entity, null);
         }
         DC.DeleteEntity(Entity);
         DC.SaveChanges();
         foreach (var item in fileids)
         {
             FileAttachmentVM ofa = new FileAttachmentVM();
             ofa.CopyContext(this);
             ofa.SetEntityById(item);
             ofa.DoDelete();
         }
     }
     catch (Exception e)
     {
         MSD.AddModelError("", "数据使用中,无法删除");
     }
 }
Exemple #10
0
        /// <summary>
        /// 进行注册
        /// </summary>
        /// <returns></returns>
        public bool DoReg()
        {
            //检查两次新密码是否输入一致,如不一致则输出错误
            if (Password != NewPasswordComfirm)
            {
                MSD.AddModelError("NewPasswordComfirm", Localizer["PasswordNotSame"]);
                return(false);
            }


            //检查itcode是否重复
            var exist = DC.Set <FrameworkUserBase>().Any(x => x.ITCode.ToLower() == ITCode.ToLower());

            if (exist == true)
            {
                MSD.AddModelError("ITCode", "账号重复");
                return(false);
            }

            FrameworkUserBase user = new FrameworkUserBase
            {
                ITCode    = ITCode,
                Name      = Name,
                Password  = Utils.GetMD5String(Password),
                IsValid   = true,
                CellPhone = CellPhone,
                Email     = Email
            };

            DC.Set <FrameworkUserBase>().Add(user);
            DC.SaveChanges();
            return(true);
        }
Exemple #11
0
 /// <summary>
 /// 删除,进行默认的删除操作。子类如有自定义操作应重载本函数
 /// </summary>
 public virtual void DoDelete()
 {
     //如果是PersistPoco,则把IsValid设为false,并不进行物理删除
     if (typeof(TModel).GetTypeInfo().IsSubclassOf(typeof(PersistPoco)))
     {
         (Entity as PersistPoco).IsValid    = false;
         (Entity as PersistPoco).UpdateTime = DateTime.Now;
         (Entity as PersistPoco).UpdateBy   = LoginUserInfo?.ITCode;
         DC.UpdateProperty(Entity, "IsValid");
         DC.UpdateProperty(Entity, "UpdateTime");
         DC.UpdateProperty(Entity, "UpdateBy");
         try
         {
             DC.SaveChanges();
         }
         catch (DbUpdateException)
         {
             MSD.AddModelError("", "数据使用中,无法删除");
         }
     }
     //如果是普通的TopBasePoco,则进行物理删除
     else if (typeof(TModel).GetTypeInfo().IsSubclassOf(typeof(TopBasePoco)))
     {
         DoRealDelete();
     }
 }
Exemple #12
0
        public override void DoAdd()
        {
            var Ctt = DC.Set <contract_pop>()
                      .Include("Contract")
                      .Where(r => r.ID == Entity.ContractPopID).FirstOrDefault().Contract;
            //var MaxCost = DC.Set<contract>().Where(r => r.ID == OrderPop.ContractPop.ContractID).FirstOrDefault().MaxCost;
            var CurQty = DC.Set <order_pop>()
                         .Include("ContractPop")
                         .Include("ContractPop.Contract")
                         .Where(r => r.ContractPopID == Entity.ContractPopID).Sum(x => x.OrderQty);
            var Price = DC.Set <contract_pop>()
                        .Include("Contract")
                        .Where(r => r.ID == Entity.ContractPopID).FirstOrDefault().Price;

            if (Ctt.MaxCost > 0 && (CurQty + Entity.OrderQty) * Price > Ctt.MaxCost)
            {
                MSD.AddModelError("OverCost", "合同订货金额超出最大限制");
                return;
            }
            if (Ctt.StartDate > DateTime.Now.Date && Ctt.EndDate < DateTime.Now.Date)
            {
                MSD.AddModelError("OverDate", "已经不再合同订购期内,无法订货");
                return;
            }
            Entity.Price = Price;
            base.DoAdd();
        }
Exemple #13
0
        /// <summary>
        /// 物理删除,对于普通的TopBasePoco和Delete操作相同,对于PersistPoco则进行真正的删除。子类如有自定义操作应重载本函数
        /// </summary>
        public virtual void DoRealDelete()
        {
            try
            {
                List <Guid> fileids = new List <Guid>();
                var         pros    = typeof(TModel).GetAllProperties();

                //如果包含附件,则先删除附件
                var fa = pros.Where(x => x.PropertyType == typeof(FileAttachment) || typeof(TopBasePoco).IsAssignableFrom(x.PropertyType)).ToList();
                foreach (var f in fa)
                {
                    if (f.GetValue(Entity) is FileAttachment file)
                    {
                        fileids.Add(file.ID);
                    }
                    f.SetValue(Entity, null);
                }

                var fas = pros.Where(x => typeof(IEnumerable <ISubFile>).IsAssignableFrom(x.PropertyType)).ToList();
                foreach (var f in fas)
                {
                    IEnumerable <ISubFile> subs = f.GetValue(Entity) as IEnumerable <ISubFile>;
                    if (subs == null)
                    {
                        var fullEntity = DC.Set <TModel>().AsQueryable().Include(f.Name).AsNoTracking().CheckID(Entity.ID).FirstOrDefault();
                        subs = f.GetValue(fullEntity) as IEnumerable <ISubFile>;
                    }
                    if (subs != null)
                    {
                        foreach (var sub in subs)
                        {
                            fileids.Add(sub.FileId);
                        }
                        f.SetValue(Entity, null);
                    }
                }
                if (typeof(TModel) != typeof(FileAttachment))
                {
                    foreach (var pro in pros)
                    {
                        if (pro.PropertyType.GetTypeInfo().IsSubclassOf(typeof(TopBasePoco)))
                        {
                            pro.SetValue(Entity, null);
                        }
                    }
                }
                DC.DeleteEntity(Entity);
                DC.SaveChanges();
                var fp = KnifeVirgo.HttpContext.RequestServices.GetRequiredService <VirgoFileProvider>();
                foreach (var item in fileids)
                {
                    fp.DeleteFile(item.ToString(), DC.ReCreate());
                }
            }
            catch (Exception)
            {
                MSD.AddModelError("", CoreProgram.Callerlocalizer["DeleteFailed"]);
            }
        }
Exemple #14
0
        private string[] suffixes; //后缀数组

        #endregion Fields

        #region Constructors

        public SuffixArray(string s)
        {
            N = s.Length;
            suffixes = new string[N];
            for (int i = 0; i < N; i++) suffixes[i] = s.Substring(i);//构造后缀数组
            MSD msd = new MSD();//将后缀数组排序
            msd.sort(suffixes);
        }
Exemple #15
0
        /// <summary>
        /// 进行登录
        /// </summary>
        /// <param name="OutsidePris">外部传递的页面权限</param>
        /// <returns>登录用户的信息</returns>
        public LoginUserInfo DoLogin(bool ignorePris = false)
        {
            //根据用户名和密码查询用户
            var user = DC.Set <MyUser>()
                       .Include(x => x.UserRoles).Include(x => x.UserGroups)
                       .Where(x => x.ITCode.ToLower() == ITCode.ToLower() && x.Password == Utils.GetMD5String(Password) && x.IsValid)
                       .SingleOrDefault();

            //如果没有找到则输出错误
            if (user == null)
            {
                MSD.AddModelError("", "登录失败");
                return(null);
            }
            var roleIDs  = user.UserRoles.Select(x => x.RoleId).ToList();
            var groupIDs = user.UserGroups.Select(x => x.GroupId).ToList();

            var sDictionary = new Dictionary <string, object>();

            sDictionary.Add("CompanyId", user.CompanyId);


            //查找登录用户的数据权限
            var dpris = DC.Set <DataPrivilege>()
                        .Where(x => x.UserId == user.ID || (x.GroupId != null && groupIDs.Contains(x.GroupId.Value)))
                        .ToList();
            //查找登录用户的公司信息
            var company = DC.Set <Company>().Where(x => x.ID == user.CompanyId).SingleOrDefault();

            if (company != null)
            {
                sDictionary.Add("CompanyCode", company.CompanyCode);
            }


            //生成并返回登录用户信息
            LoginUserInfo rv = new LoginUserInfo
            {
                Id             = user.ID,
                ITCode         = user.ITCode,
                Name           = user.Name,
                PhotoId        = user.PhotoId,
                Roles          = DC.Set <FrameworkRole>().Where(x => user.UserRoles.Select(y => y.RoleId).Contains(x.ID)).ToList(),
                Groups         = DC.Set <FrameworkGroup>().Where(x => user.UserGroups.Select(y => y.GroupId).Contains(x.ID)).ToList(),
                DataPrivileges = dpris,
                Attributes     = sDictionary
            };

            if (ignorePris == false)
            {
                //查找登录用户的页面权限
                var pris = DC.Set <FunctionPrivilege>()
                           .Where(x => x.UserId == user.ID || (x.RoleId != null && roleIDs.Contains(x.RoleId.Value)))
                           .ToList();
                rv.FunctionPrivileges = pris;
            }
            return(rv);
        }
Exemple #16
0
        /// <summary>
        /// 验证数据,默认验证重复数据。子类如需要其他自定义验证,则重载这个函数
        /// </summary>
        /// <returns>验证结果</returns>
        public override void Validate()
        {
            if (ByPassBaseValidation == false)
            {
                base.Validate();
                //如果msd是BasicMSD,则认为他是手动创建的,也就是说并没有走asp.net core默认的模型验证
                //那么手动验证模型
                if (KnifeVirgo?.MSD is BasicMSD)
                {
                    var valContext = new ValidationContext(this.Entity);
                    List <ValidationResult> error = new List <ValidationResult>();
                    if (!Validator.TryValidateObject(Entity, valContext, error, true))
                    {
                        foreach (var item in error)
                        {
                            string key = item.MemberNames.FirstOrDefault();
                            if (MSD.Keys.Contains(key) == false)
                            {
                                MSD.AddModelError($"Entity.{key}", item.ErrorMessage);
                            }
                        }
                    }
                    var list = typeof(TModel).GetAllProperties().Where(x => x.PropertyType.IsListOf <TopBasePoco>());
                    foreach (var item in list)
                    {
                        var it = item.GetValue(Entity) as IEnumerable;
                        if (it == null)
                        {
                            continue;
                        }
                        var contextset = false;
                        foreach (var e in it)
                        {
                            if (contextset == false)
                            {
                                valContext = new ValidationContext(e);
                                contextset = true;
                            }

                            if (!Validator.TryValidateObject(e, valContext, error, true))
                            {
                                foreach (var err in error)
                                {
                                    string key = err.MemberNames.FirstOrDefault();
                                    if (MSD.Keys.Contains(key) == false)
                                    {
                                        MSD.AddModelError($"Entity.{item.Name}.{key}", err.ErrorMessage);
                                    }
                                }
                            }
                        }
                    }
                }

                //验证重复数据
                ValidateDuplicateData();
            }
        }
Exemple #17
0
        /// <summary>
        /// 物理删除,对于普通的TopBasePoco和Delete操作相同,对于PersistPoco则进行真正的删除。子类如有自定义操作应重载本函数
        /// </summary>
        public virtual void DoRealDelete()
        {
            try
            {
                List <Guid> fileids = new List <Guid>();
                var         pros    = typeof(TModel).GetProperties();

                //如果包含附件,则先删除附件
                var fa = pros.Where(x => x.PropertyType == typeof(FileAttachment) || typeof(TopBasePoco).IsAssignableFrom(x.PropertyType)).ToList();
                foreach (var f in fa)
                {
                    if (f.GetValue(Entity) is FileAttachment file)
                    {
                        fileids.Add(file.ID);
                    }
                    f.SetValue(Entity, null);
                }

                var fas = pros.Where(x => typeof(IEnumerable <ISubFile>).IsAssignableFrom(x.PropertyType)).ToList();
                foreach (var f in fas)
                {
                    var subs = f.GetValue(Entity) as IEnumerable <ISubFile>;
                    if (subs != null)
                    {
                        foreach (var sub in subs)
                        {
                            fileids.Add(sub.FileId);
                        }
                        f.SetValue(Entity, null);
                    }
                }
                if (typeof(TModel) != typeof(FileAttachment))
                {
                    foreach (var pro in pros)
                    {
                        if (pro.PropertyType.GetTypeInfo().IsSubclassOf(typeof(TopBasePoco)))
                        {
                            pro.SetValue(Entity, null);
                        }
                    }
                }
                DC.DeleteEntity(Entity);
                DC.SaveChanges();
                foreach (var item in fileids)
                {
                    FileAttachmentVM ofa = new FileAttachmentVM();
                    ofa.CopyContext(this);
                    ofa.SetEntityById(item);
                    ofa.DoDelete();
                }
            }
            catch (Exception)
            {
                MSD.AddModelError("", Program._localizer["DeleteFailed"]);
            }
        }
        private static void MSDSort()
        {
            var fileName = "MSD.txt";
            var strings  = ReadFile(fileName);

            PrintArray(strings);
            StdOut.Println("After sorting.....");
            MSD.Sort(strings);
            PrintArray(strings);
        }
Exemple #19
0
        public bool DoRecPop()
        {
            if (Location == null || Location == Guid.Empty)
            {
                MSD.AddModelError("NullLocation", "请选择上架货位");
                return(false);
            }
            if (RecQty > (Entity.OrderQty - Entity.RecQty))
            {
                MSD.AddModelError("QtyOver", "实收数量不能大于剩余可收货数量");
                return(false);
            }
            var loc = DC.Set <area_location>().AsNoTracking().Where(r => r.ID == Location.Value).FirstOrDefault();

            if (!loc.isMix.Value)
            {
                var         invs   = DC.Set <inventory>().Where(r => r.LocationID == Location.Value);
                var         InInvs = DC.Set <inventoryIn>().Include("OrderPop.ContractPop").Where(r => invs.Select(x => x.ID).Contains(r.InvID));
                List <Guid> pops   = InInvs.Select(r => r.OrderPop.ContractPop.PopID).ToList();
                pops.Add(Entity.ContractPop.PopID);
                if (pops.Distinct().Count() > 1)
                {
                    MSD.AddModelError("LocNotMix", "货位不可混放,但当前货位已经有其他货品了");
                    return(false);
                }
            }

            inventory inv = new inventory
            {
                ID         = Guid.NewGuid(),
                LocationID = Location.Value,
                Stock      = RecQty,
                PutUser    = LoginUserInfo.ITCode + " | " + LoginUserInfo.Name,
                PutTime    = DateTime.Now
            };
            inventoryIn InvIn = new inventoryIn
            {
                CreateBy   = LoginUserInfo.ITCode,
                CreateTime = DateTime.Now,
                InvID      = inv.ID,
                OrderPopID = Entity.ID,
                InQty      = RecQty
            };

            DC.AddEntity(inv);
            DC.AddEntity(InvIn);
            var OrderPop = DC.Set <order_pop>().Where(r => r.ID == Entity.ID).FirstOrDefault();

            OrderPop.Status  = OrderPop.RecQty + RecQty == OrderPop.OrderQty ? RecStatus.FINISH : RecStatus.ING;
            OrderPop.RecQty += RecQty;
            OrderPop.RecTime = DateTime.Now;
            OrderPop.RecUser = LoginUserInfo.ITCode + " | " + LoginUserInfo.Name;
            DC.UpdateEntity(OrderPop);
            return(DC.SaveChanges() > 0 ? true : false);
        }
Exemple #20
0
        public void Test()
        {
            var words = "bed bug dad yes zoo now for tip ilk dim tag jot sob nob sky hut men egg few jay owl joy rap gig wee was wad fee tap tar dug jam all bad yet".Split(' ');

            MSD.Sort(words);

            for (var i = 1; i < words.Length; ++i)
            {
                Assert.True(words[i - 1].CompareTo(words[i]) <= 0);
            }
        }
Exemple #21
0
        private int N;             //字符串的长度(即后缀数组的维度)

        public SuffixArray(string s)
        {
            N        = s.Length;
            suffixes = new string[N];
            for (int i = 0; i < N; i++)
            {
                suffixes[i] = s.Substring(i); //构造后缀数组
            }
            MSD msd = new MSD();              //将后缀数组排序

            msd.sort(suffixes);
        }
 public override void Validate()
 {
     if (Entity.IsInside == true && Entity.FolderOnly == false)
     {
         var modules = KnifeVirgo.GlobaInfo.AllModule;
         var test    = DC.Set <FrameworkMenu>().Where(x => x.ClassName == this.SelectedModule && (x.MethodName == null || x.MethodName == "Index") && x.ID != Entity.ID).FirstOrDefault();
         if (test != null)
         {
             MSD.AddModelError(" error", Localizer["ModuleHasSet"]);
         }
     }
     base.Validate();
 }
Exemple #23
0
 public override void Validate()
 {
     if (Entity.IsInside == true && Entity.FolderOnly == false)
     {
         var modules = GlobalServices.GetRequiredService <GlobalData>().AllModule;
         var test    = DC.Set <FrameworkMenu>().Where(x => x.ClassName == this.SelectedModule && (x.MethodName == null || x.MethodName == "Index") && x.ID != Entity.ID).FirstOrDefault();
         if (test != null)
         {
             MSD.AddModelError(" error", Program._localizer["ModuleHasSet"]);
         }
     }
     base.Validate();
 }
Exemple #24
0
 public override void Validate()
 {
     if (Entity.IsInside == true && Entity.FolderOnly == false)
     {
         var modules = Wtm.GlobaInfo.AllModule;
         var test    = DC.Set <FrameworkMenu>().Where(x => x.ClassName == this.SelectedModule && string.IsNullOrEmpty(x.MethodName) && x.ID != Entity.ID).FirstOrDefault();
         if (test != null)
         {
             MSD.AddModelError(" error", Localizer["_Admin.ModuleHasSet"]);
         }
     }
     base.Validate();
 }
        public override void Validate()
        {
            List <ValidationResult> rv = new List <ValidationResult>();

            if (DC.Set <FrameworkUser>().Where(x => x.ITCode == LoginUserInfo.ITCode && x.Password == Utils.GetMD5String(OldPassword)).SingleOrDefault() == null)
            {
                MSD.AddModelError("OldPassword", Localizer["Login.OldPasswrodWrong"]);
            }
            if (NewPassword != NewPasswordComfirm)
            {
                MSD.AddModelError("NewPasswordComfirm", Localizer["Login.PasswordNotSame"]);
            }
        }
Exemple #26
0
 public override void Validate()
 {
     if (Entity.IsInside == true && Entity.FolderOnly == false)
     {
         var modules = GlobalServices.GetRequiredService <GlobalData>().AllModule;
         var test    = DC.Set <FrameworkMenu>().Where(x => x.ClassName == this.SelectedModule && string.IsNullOrEmpty(x.MethodName) && x.ID != Entity.ID).FirstOrDefault();
         if (test != null)
         {
             MSD.AddModelError(" error", "该模块已经配置过了");
         }
     }
     base.Validate();
 }
Exemple #27
0
        /// <summary>
        /// 自定义验证函数,验证原密码是否正确,并验证两次新密码是否输入一致
        /// </summary>
        /// <returns>验证结果</returns>
        public override void Validate()
        {
            List <ValidationResult> rv = new List <ValidationResult>();

            //检查原密码是否正确,如不正确则输出错误
            if (DC.Set <FrameworkUserBase>().Where(x => x.ITCode == LoginUserInfo.ITCode && x.Password == Utils.GetMD5String(OldPassword)).SingleOrDefault() == null)
            {
                MSD.AddModelError("OldPassword", "当前密码错误");
            }
            //检查两次新密码是否输入一致,如不一致则输出错误
            if (NewPassword != NewPasswordComfirm)
            {
                MSD.AddModelError("NewPasswordComfirm", "两次新密码输入不一致");
            }
        }
Exemple #28
0
        public override void Validate()
        {
            var modules    = GlobalServices.GetRequiredService <GlobalData>().AllModule;
            var mainAction = modules.Where(x => x.FullName == this.SelectedModule).SelectMany(x => x.Actions).Where(x => x.MethodName == "Index").SingleOrDefault();

            if (mainAction != null)
            {
                var test = DC.Set <FrameworkMenu>().Where(x => x.Url == mainAction.Url && x.ID != Entity.ID).FirstOrDefault();
                if (test != null)
                {
                    MSD.AddModelError(" error", "该模块已经配置过了");
                }
            }
            base.Validate();
        }
 public override void DoDelete()
 {
     try
     {
         if (Entity.SaveFileMode == SaveFileModeEnum.Local && !string.IsNullOrEmpty(Entity.Path))
         {
             Utils.DeleteFile(Entity.Path);
         }
         DC.Database.ExecuteSqlCommand(new RawSqlString($"delete from {DC.GetTableName<FileAttachment>()} where ID='{Entity.ID}'"));
     }
     catch (DbUpdateException)
     {
         MSD.AddModelError("", "数据被使用,无法删除");
     }
 }
Exemple #30
0
        public void DerivedTestThroughDictionary()
        {
            var m = new MSD();

            m.abc = 123;
            string json = JsonUtil.ToJson(m);
            Dictionary <string, object> dict = JsonUtil.ToObject <Dictionary <string, object> >(json);

            Assert.IsTrue(dict.ContainsKey("abc"));
            Assert.AreEqual(Convert.ToInt32(dict["abc"]), 123);
            json = JsonUtil.ToJson(dict);
            var m2 = JsonUtil.ToObject <MSD>(json);

            Assert.AreEqual(m2.abc, m.abc);
        }
Exemple #31
0
        /// <summary>
        /// 物理删除,对于普通的TopBasePoco和Delete操作相同,对于PersistPoco则进行真正的删除。子类如有自定义操作应重载本函数
        /// </summary>
        public virtual void DoRealDelete()
        {
            try
            {
                List <Guid> fileids = new List <Guid>();
                var         pros    = typeof(TModel).GetProperties();
                //如果包含附件,则先删除附件
                var fa = pros.Where(x => x.PropertyType == typeof(FileAttachment) || typeof(TopBasePoco).IsAssignableFrom(x.PropertyType)).ToList();
                foreach (var f in fa)
                {
                    if (f.GetValue(Entity) is FileAttachment file)
                    {
                        fileids.Add(file.ID);
                    }
                    f.SetValue(Entity, null);
                }

                var fas = pros.Where(x => typeof(IEnumerable <ISubFile>).IsAssignableFrom(x.PropertyType)).ToList();
                foreach (var f in fas)
                {
                    var subs = f.GetValue(Entity) as IEnumerable <ISubFile>;
                    foreach (var sub in subs)
                    {
                        fileids.Add(sub.FileId);
                    }
                    f.SetValue(Entity, null);
                }
                using (var newdc = DC.ReCreate())
                {
                    TModel m = new TModel();
                    m.SetPropertyValue("ID", Entity.GetID());
                    newdc.Set <TModel>().Attach(m);
                    newdc.DeleteEntity(m);
                    newdc.SaveChanges();
                }
                foreach (var item in fileids)
                {
                    FileAttachmentVM ofa = new FileAttachmentVM();
                    ofa.CopyContext(this);
                    ofa.SetEntityById(item);
                    ofa.DoDelete();
                }
            }
            catch (Exception e)
            {
                MSD.AddModelError("", "数据使用中,无法删除");
            }
        }