예제 #1
0
파일: Leave.cs 프로젝트: Tsual/HapGp
        public static void RequestLeave(this Userx user, int ClassSelectID)
        {
            var db = new AppDbContext();

            if (db.M_ProjectSelectModels.Find(ClassSelectID) == null)
            {
                throw new FPException("请假失败");
            }

            if ((from t in db.M_LeaveModle
                 where t.ClassID == ClassSelectID && t.StudentID == user.Origin.ID
                 select 1).Count() > 0)
            {
                throw new FPException("已经请假");
            }

            var model = new LeaveModel()
            {
                StudentID  = user.Origin.ID,
                ClassID    = ClassSelectID,
                IsApproved = false
            };

            db.Entry(model).State = Microsoft.EntityFrameworkCore.EntityState.Added;
            db.SaveChanges();
        }
예제 #2
0
 public static PostResponseModel _AddRecord(PostInparamModel value)
 {
     try
     {
         using (var server = FrameCorex.RecoverService(value.Token, (c) => { Debug.WriteLine("Container Token not found Token: " + c); }))
         {
             if (!FrameCorex.ServiceInstanceInfo(server).IsLogin)
             {
                 server.UserLogin(value.LID, value.PWD);
                 FrameCorex.ServiceInstanceInfo(server).DisposeInfo = false;
             }
             Userx User = FrameCorex.ServiceInstanceInfo(server).User;
             foreach (var t in value.Params)
             {
                 if (t.Value != null)
                 {
                     User.Records[t.Key] = t.Value;
                 }
             }
             return(new PostResponseModel()
             {
                 Message = "Record add successs",
                 Result = Enums.APIResult.Success,
                 UserLoginToken = FrameCorex.ServiceInstanceInfo(server).LoginHashToken
             });
         }
     }
     catch (UserNotfindException ex)
     {
         return(new PostResponseModel()
         {
             Message = ex.Message,
             Result = Enums.APIResult.Error
         });
     }
     catch (UserLoginPermissionException ex)
     {
         return(new PostResponseModel()
         {
             Message = ex.Message,
             Result = Enums.APIResult.Error
         });
     }
     catch (UserPwdErrorException ex)
     {
         return(new PostResponseModel()
         {
             Message = ex.Message,
             Result = Enums.APIResult.Error
         });
     }
     catch (FPException ex)
     {
         return(new PostResponseModel()
         {
             Message = ex.Message,
             Result = Enums.APIResult.Error
         });
     }
 }
예제 #3
0
            /// <summary>
            ///
            /// </summary>
            /// <param name="LID"></param>
            /// <param name="PWD"></param>
            /// <returns></returns>
            internal static bool _CheckLIDPWD(string LID, string PWD)
            {
                AppDbContext db               = new AppDbContext();
                string       PWD_ori_hash     = Userx.HashOripwd(LID, PWD);
                string       PWD_ori_hash_aes = CurrnetAppEncryptor.Encrypt(PWD_ori_hash);
                var          user             = (from t in db.M_UserModels
                                                 where t.LID == LID && t.PWD == PWD_ori_hash_aes
                                                 select t).ToArray();

                return(user.Length == 1);
            }
예제 #4
0
        public static void FinishMission(this Userx user, int MissionID)
        {
            var db    = new AppDbContext();
            var model = db.M_MissionModel.Find(MissionID);

            if (model != null)
            {
                model.IsFinished      = true;
                db.Entry(model).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
                db.SaveChanges();
            }
        }
예제 #5
0
파일: Leave.cs 프로젝트: Tsual/HapGp
        public static void CancelLeave(this Userx user, int LeaveID)
        {
            var db     = new AppDbContext();
            var models = (from t in db.M_LeaveModle
                          where t.ID == LeaveID
                          select t).ToList();

            if (models.Count != 1)
            {
                throw new FPException("撤销失败:未找到请假单");
            }
            db.Entry(models[0]).State = Microsoft.EntityFrameworkCore.EntityState.Deleted;
            db.SaveChanges();
        }
예제 #6
0
파일: Leave.cs 프로젝트: Tsual/HapGp
        public static void ApproveLeave(this Userx user, int LeaveID)
        {
            var db     = new AppDbContext();
            var models = (from t in db.M_LeaveModle
                          where t.ID == LeaveID && t.IsApproved == false
                          select t).ToList();

            if (models.Count != 1)
            {
                return;
            }
            models[0].IsApproved        = true;
            models[0].ApprovedTeacherID = user.Origin.ID;
            db.Entry(models[0]).State   = Microsoft.EntityFrameworkCore.EntityState.Modified;
            db.SaveChanges();
        }
예제 #7
0
 public static IEnumerable <MissionModel> QueryMissions(this Userx user)
 {
     if (user.Infos.Role == Enums.UserRole.Student)
     {
         var db = new AppDbContext();
         return((from t in db.M_MissionModel
                 where t.StudentID == user.Origin.ID
                 select t).ToList());
     }
     else if (user.Infos.Role == Enums.UserRole.Teacher)
     {
         var db = new AppDbContext();
         return((from t in db.M_MissionModel
                 where t.TeacherID == user.Origin.ID && t.IsFinished == false
                 select t).ToList());
     }
     else
     {
         return(null);
     }
 }
예제 #8
0
파일: Leave.cs 프로젝트: Tsual/HapGp
 public static IEnumerable <LeaveModel> QueryLeave(this Userx user)
 {
     if (user.Infos.Role == Enums.UserRole.Student)
     {
         return((from t in (new AppDbContext()).M_LeaveModle
                 where t.StudentID == user.Origin.ID && t.IsApproved == false
                 select t).ToList());
     }
     else if (user.Infos.Role == Enums.UserRole.Teacher)
     {
         var db     = new AppDbContext();
         var classs = (from t in db.M_ProjectModels
                       where t.TeacherID == user.Origin.ID
                       select t.Key).ToList();
         var classselect = (from t in db.M_ProjectSelectModels
                            where classs.Contains(t.ProjectID)
                            select t.Key).ToList();
         return((from t in (new AppDbContext()).M_LeaveModle
                 where classselect.Contains(t.ClassID) && t.IsApproved == false
                 select t).ToList());
     }
     throw new FPException("请假单查询失败");
 }
예제 #9
0
        public static void CreateMission(this Userx user, int ClassID, string Name)
        {
            if (user.Infos.Role == Enums.UserRole.Student)
            {
                throw new FPException("需要教师角色");
            }
            var db   = new AppDbContext();
            var stds = (from t in db.M_ProjectSelectModels
                        where t.ProjectID == ClassID
                        select t.StudentID).ToList();

            foreach (var t in stds)
            {
                var model = new MissionModel()
                {
                    StudentID  = t,
                    TeacherID  = user.Origin.ID,
                    Name       = Name,
                    IsFinished = false
                };
                db.Entry(model).State = Microsoft.EntityFrameworkCore.EntityState.Added;
            }
            db.SaveChanges();
        }
예제 #10
0
 public static PostResponseModel _AddRecord(PostInparamModel value)
 {
     try
     {
         using (var server = FrameCorex.RecoverService(value.Token, (c) => { Debug.WriteLine("Container Token not found Token: " + c); }))
         {
             if (server.Info.User == null)
             {
                 return new PostResponseModel()
                        {
                            Message   = "登陆失败",
                            Result    = Enums.APIResult.Error,
                            ExtResult = { }
                        }
             }
             ;
             Userx User = FrameCorex.ServiceInstanceInfo(server).User;
             //if (string.IsNullOrEmpty(User.Origin.LID) || string.IsNullOrEmpty(User.Origin.PWD))
             //    throw new FPException("请先补全注册信息");
             foreach (var t in value.Params)
             {
                 if (t.Value != null)
                 {
                     User.Records[t.Key] = t.Value;
                 }
             }
             return(new PostResponseModel()
             {
                 Message = "Record add successs",
                 Result = Enums.APIResult.Success,
                 UserLoginToken = FrameCorex.ServiceInstanceInfo(server).LoginHashToken
             });
         }
     }
     catch (UserNotfindException ex)
     {
         return(new PostResponseModel()
         {
             Message = ex.Message,
             Result = Enums.APIResult.Error
         });
     }
     catch (UserLoginPermissionException ex)
     {
         return(new PostResponseModel()
         {
             Message = ex.Message,
             Result = Enums.APIResult.Error
         });
     }
     catch (UserPwdErrorException ex)
     {
         return(new PostResponseModel()
         {
             Message = ex.Message,
             Result = Enums.APIResult.Error
         });
     }
     catch (FPException ex)
     {
         return(new PostResponseModel()
         {
             Message = ex.Message,
             Result = Enums.APIResult.Error
         });
     }
 }
예제 #11
0
            /// <summary>
            ///
            /// </summary>
            public static void _CheckCreateDeaultUser()
            {
                AppDbContext db    = new AppDbContext();
                var          guest = (from t in db.M_UserModels
                                      where t.LID == "Guest"
                                      select t).ToArray();

                if (guest.Length == 0)
                {
                    string PWD_ori_hash     = Userx.HashOripwd("Guest", "Guest");
                    string PWD_ori_hash_aes = CurrnetAppEncryptor.Encrypt(PWD_ori_hash);
                    Userx  um = new UserModel()
                    {
                        LID = "Guest",
                        PWD = PWD_ori_hash_aes
                    };
                    um.Infos.UserPermission       = Enums.Permission.Guest;
                    db.Entry((UserModel)um).State = Microsoft.EntityFrameworkCore.EntityState.Added;
                }
                else
                {
                    Userx um = guest[0];
                    if (um.Infos.UserPermission != Enums.Permission.Guest)
                    {
                        um.Infos.UserPermission       = Enums.Permission.Guest;
                        db.Entry((UserModel)um).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
                    }
                }

                var root = (from t in db.M_UserModels
                            where t.LID == "Root"
                            select t).ToArray();

                if (root.Length == 0)
                {
                    string PWD_ori_hash     = Userx.HashOripwd("Root", "Root");
                    string PWD_ori_hash_aes = CurrnetAppEncryptor.Encrypt(PWD_ori_hash);
                    Userx  um = new UserModel()
                    {
                        LID = "Root",
                        PWD = PWD_ori_hash_aes
                    };
                    um.Infos.UserPermission       = Enums.Permission.root;
                    db.Entry((UserModel)um).State = Microsoft.EntityFrameworkCore.EntityState.Added;
                }
                else
                {
                    Userx um = root[0];
                    if (um.Infos.UserPermission != Enums.Permission.root)
                    {
                        um.Infos.UserPermission       = Enums.Permission.root;
                        db.Entry((UserModel)um).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
                    }
                }

                var admin = (from t in db.M_UserModels
                             where t.LID == "Admin"
                             select t).ToArray();

                if (admin.Length == 0)
                {
                    string PWD_ori_hash     = Userx.HashOripwd("Admin", "Admin");
                    string PWD_ori_hash_aes = CurrnetAppEncryptor.Encrypt(PWD_ori_hash);
                    Userx  um = new UserModel()
                    {
                        LID = "Admin",
                        PWD = PWD_ori_hash_aes
                    };
                    um.Infos.UserPermission       = Enums.Permission.Administor;
                    db.Entry((UserModel)um).State = Microsoft.EntityFrameworkCore.EntityState.Added;
                }
                else
                {
                    Userx um = admin[0];
                    if (um.Infos.UserPermission != Enums.Permission.Administor)
                    {
                        um.Infos.UserPermission       = Enums.Permission.Administor;
                        db.Entry((UserModel)um).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
                    }
                }

                db.SaveChanges();
            }
예제 #12
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="User"></param>
 /// <returns></returns>
 internal static string _FindEncryptToken(Userx User) => _CheckUserLogin(User) ? (from t in _ServiceInstances.Values
                                                                                      where t.User == User
                                                                                  select t).ToList()[0].EncryptToken : null;
예제 #13
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="User"></param>
 /// <returns></returns>
 internal static bool _CheckUserLogin(Userx User) => (from t in _ServiceInstances.Values
                                                          where t.User == User
                                                      select t).ToArray().Length > 0;
예제 #14
0
 public static void AddSchoolBus(this Userx user)
 {
 }
예제 #15
0
 public static IEnumerable <SchoolBusModel> GetAllSchoolBus(this Userx user)
 {
     return((from t in (new AppDbContext()).M_SchoolBusModel
             select t).ToList());
 }