예제 #1
0
        public List <UserSearchResult> GetAllMemberInGroup(string groupId)
        {
            db = new TimeAttendanceEntities();

            try
            {
                var listmodel = (from a in db.User.AsNoTracking()
                                 where a.DeleteFlg == Constants.DeleteFalse
                                 join c in db.UserGroup.AsNoTracking() on a.UserId equals c.UserId into ac
                                 from acv in ac.DefaultIfEmpty()
                                 where acv.GroupId.Equals(groupId)
                                 orderby a.Name ascending
                                 select new UserSearchResult()
                {
                    UserId = a.UserId,
                    Name = a.Name,
                    FullName = a.FullName,
                    BirthDay = a.BirthDay,
                    Agency = a.Agency,
                    Email = a.Email,
                    Role = a.Role,
                    PhoneNumber = a.PhoneNumber,
                    Description = a.Description,
                    GroupId = acv != null ? acv.GroupId : string.Empty
                }).ToList();

                return(listmodel);
            }
            catch (Exception ex)
            {
                throw new ErrorException(ErrorMessage.ERR001, ex.InnerException);
            }
        }
        /// <summary>
        /// Danh sách nhóm quyền đang kích hoạt
        /// </summary>
        /// <returns></returns>
        public SearchResultObject <GroupEntity> GetSelectGroup()
        {
            db = new TimeAttendanceEntities();
            SearchResultObject <GroupEntity> result = new SearchResultObject <GroupEntity>();

            try
            {
                var listResult = (from a in db.Group.AsNoTracking()
                                  where a.Status.HasValue && a.Status.Value == Constants.UnLock
                                  orderby a.Name ascending
                                  select new GroupEntity()
                {
                    GroupId = a.GroupId,
                    Name = a.Name,
                }).ToList();

                result.ListResult = listResult;

                return(result);
            }
            catch (Exception ex)
            {
                throw new ErrorException(ErrorMessage.ERR001, ex.InnerException);
            }
        }
예제 #3
0
 private async Task LogAttendance(TimeAttendanceEntities dbEnti, List <IdentifiedPerson> listIdentifiedPerson, DateTime date, string imageLink)
 {
     try
     {
         List <AttendanceLog> listTimeAttendanceLog = new List <AttendanceLog>();
         var      logDateTo = date;
         TimeSpan timeSpan;
         foreach (var item in listIdentifiedPerson)
         {
             timeSpan           = (date - TimeAttendanceStatic.StartTime.Value);
             modelAttendanceLog = new AttendanceLog()
             {
                 AttendanceLogId = Guid.NewGuid().ToString(),
                 EmployeeId      = item.InfoEmployee != null ? item.InfoEmployee.EmployeeId : "Unknown",
                 Date            = logDateTo,
                 ImageLink       = imageLink,
                 ClientIPAddress = modelTransactionLog.ClientIPAddress,
                 CameraIPAdress  = modelTransactionLog.CameraIPAdress,
                 Confidence      = item.Confidence,
                 FaceCount       = listIdentifiedPerson.Count(),
                 ImageFace       = item.ImageFace,
                 Note            = item.Note
             };
             listTimeAttendanceLog.Add(modelAttendanceLog);
         }
         if (listTimeAttendanceLog.Count > 0)
         {
             dbEnti.AttendanceLog.AddRange(listTimeAttendanceLog);
         }
         dbEnti.SaveChanges();
     }
     catch (Exception)
     { }
 }
예제 #4
0
        public List <InfoEmployeeModel> GetAllEmployee()
        {
            db = new TimeAttendanceEntities();
            try
            {
                var listResult = (from a in db.Employee.AsNoTracking()
                                  join b in db.Department.AsNoTracking() on a.DepartmentId equals b.DepartmentId
                                  join c in db.JobTitle.AsNoTracking() on a.JobTitleId equals c.JobTitleId
                                  select new InfoEmployeeModel()
                {
                    EmployeeId = a.EmployeeId,
                    DepartmentName = b.Name,
                    JobTitleName = c.Name,
                    FaceId = a.FaceId,
                    Name = a.Name,
                    Code = a.Code,
                    DateOfBirth = a.DateOfBirth,
                    GenderName = a.Gender == Constants.Male ? "Nam" : "Nữ",
                    InComeDate = a.InComeDate,
                    IdentifyCardNumber = a.IdentifyCardNumber,
                    LinkImage = a.LinkImage,
                }).ToList();

                return(listResult);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
        public void UpdateStatusUser(string id, UserModel model)
        {
            db = new TimeAttendanceEntities();
            var objectUpdate = db.User.Find(id);

            if (objectUpdate == null)
            {
                throw new BusinessException(ErrorMessage.ERR002);
            }

            var group = (from a in db.Group.AsNoTracking()
                         where a.Status == Constants.Lock
                         join b in db.UserGroup.AsNoTracking() on a.GroupId equals b.GroupId
                         where b.UserId.Equals(id)
                         select a).ToList();

            if (group.Count() > 0 && objectUpdate.Status.HasValue && objectUpdate.Status.Value == Constants.Lock)
            {
                throw new BusinessException(ErrorMessage.ERR004);
            }


            using (var trans = db.Database.BeginTransaction())
            {
                try
                {
                    objectUpdate.Status = (objectUpdate.Status.HasValue && objectUpdate.Status.Value == Constants.Lock ? Constants.UnLock : Constants.Lock);

                    //Xóa Tokens khi khóa tài khoản
                    if (objectUpdate.Status == Constants.Lock)
                    {
                        var deleteAuth = authContext.RefreshTokens.Where(r => r.Subject.Equals(objectUpdate.Name));
                        authContext.RefreshTokens.RemoveRange(deleteAuth);
                        authContext.SaveChanges();
                    }
                    db.SaveChanges();
                    trans.Commit();

                    //luu Log lich su
                    string decription = "Cập nhật trạng thái có tên là: " + objectUpdate.Name;
                    LogBusiness.SaveLogEvent(db, model.UserId, decription, null);
                    //xóa cache
                    //   var RedisConnection = System.Configuration.ConfigurationManager.AppSettings["RedisConnection"];

                    var redis = RedisService <LoginCacheModel> .GetInstance(RedisConnection);

                    LoginCacheModel RefreshToken;
                    RefreshToken = redis.Get <LoginCacheModel>(Constants.ATLogin + objectUpdate.Name);
                    if (RefreshToken != null)
                    {
                        redis.Remove(Constants.ATLogin + objectUpdate.Name);
                    }
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    throw new ErrorException(ErrorMessage.ERR001, ex.InnerException);
                }
            }
        }
        public void SelfUpdateInfo(UserModel model)
        {
            db = new TimeAttendanceEntities();
            var modelEdit = db.User.Where(r => r.UserId.Equals(model.UserId) && r.DeleteFlg == Constants.DeleteFalse).FirstOrDefault();

            if (modelEdit == null)
            {
                throw new BusinessException(ErrorMessage.ERR003);
            }
            if (modelEdit.Name != model.Name)
            {
                if (this.IsExistedUser(model.Name))
                {
                    throw new BusinessException(ErrorMessage.ERR002);
                }
            }

            using (var trans = db.Database.BeginTransaction())
            {
                try
                {
                    var userNameOld = modelEdit.Name;

                    modelEdit.FullName    = model.FullName;
                    modelEdit.BirthDay    = model.BirthDay;
                    modelEdit.Email       = model.Email;
                    modelEdit.PhoneNumber = model.PhoneNumber;
                    modelEdit.Role        = model.Role;
                    modelEdit.Agency      = model.Agency;
                    modelEdit.ImageLink   = model.ImageLink;
                    modelEdit.UpdateBy    = model.UpdateBy;
                    modelEdit.UpdateDate  = DateTime.Now;

                    if (!string.IsNullOrEmpty(model.GroupId))
                    {
                        var itemDelete = db.UserGroup.Where(r => r.UserId.Equals(model.UserId));
                        db.UserGroup.RemoveRange(itemDelete);
                        UserGroup userGroup = new UserGroup()
                        {
                            UserGroupId = Guid.NewGuid().ToString(),
                            GroupId     = model.GroupId,
                            UserId      = model.UserId,
                        };
                        db.UserGroup.Add(userGroup);
                    }

                    string decription = "Cập nhật thông tin cá nhân";
                    LogBusiness.SaveLogEvent(db, model.LogUserId, decription, null);

                    db.SaveChanges();
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    throw new ErrorException(ErrorMessage.ERR001, ex.InnerException);
                }
            }
        }
 public FaceHelperFuntionBusiness(ConnectionModel connectionModel)
 {
     _RedisConnection = connectionModel.RedisConnection;
     _connStr         = connectionModel.connStr;
     if (db == null)
     {
         db = new TimeAttendanceEntities(_connStr);
     }
 }
        public UserModel GetUserById(string userId)
        {
            db = new TimeAttendanceEntities();
            try
            {
                var result = (from a in db.User.AsNoTracking()
                              where a.UserId.Equals(userId) && a.DeleteFlg == Constants.DeleteFalse
                              join c in db.UserGroup.AsNoTracking() on a.UserId equals c.UserId into ac
                              from acv in ac.DefaultIfEmpty()
                              orderby a.Name ascending
                              select new UserModel()
                {
                    UserId = a.UserId,
                    Name = a.Name,
                    FullName = a.FullName,
                    BirthDay = a.BirthDay,
                    Agency = a.Agency,
                    Email = a.Email,
                    UnitId = a.UnitId,
                    Role = a.Role,
                    PhoneNumber = a.PhoneNumber,
                    Address = a.Address,
                    Password = a.Password,
                    PasswordHash = a.PasswordHash,
                    Status = a.Status,
                    Description = a.Description,
                    ImageLink = a.ImageLink,
                    CreateBy = a.CreateBy,
                    CreateDate = a.CreateDate,
                    UpdateBy = a.UpdateBy,
                    UpdateDate = a.UpdateDate,
                    GroupId = acv.GroupId,
                    Type = a.Type,
                }).FirstOrDefault();

                if (result == null)
                {
                    throw new BusinessException(ErrorMessage.ERR003);
                }

                result.ListPermission = (from a in db.UserPermission.AsNoTracking()
                                         where a.UserId.Equals(userId)
                                         select new FunctionModel
                {
                    FunctionId = a.FunctionId,
                    Select = true,
                }).ToList();

                return(result);
            }
            catch (Exception ex)
            {
                throw new ErrorException(ErrorMessage.ERR001, ex.InnerException);
            }
        }
        /// <summary>
        /// Check tồn tại tài khoản
        /// </summary>
        /// <param name="userName"></param>
        /// <returns></returns>
        private bool IsExistedUser(string userName)
        {
            db = new TimeAttendanceEntities();
            var listUser = db.User.AsNoTracking().Where(r => r.Name.Equals(userName));

            if (listUser.Count() > 0)
            {
                return(true);
            }
            return(false);
        }
예제 #10
0
        public void CreateGroup(GroupModel model)
        {
            db = new TimeAttendanceEntities();

            using (var trans = db.Database.BeginTransaction())
            {
                try
                {
                    Group modelCreate = new Group()
                    {
                        GroupId     = Guid.NewGuid().ToString(),
                        Name        = model.Name,
                        HomePage    = model.HomePage,
                        Status      = Constants.UnLock,
                        Description = model.Description,
                        CreateBy    = model.CreateBy,
                        CreateDate  = DateTime.Now,
                    };
                    db.Group.Add(modelCreate);

                    //Thêm dánh sách quyền cho nhóm
                    List <GroupPermission> listPermission = new List <GroupPermission>();
                    GroupPermission        modelPermission;
                    if (model.ListPermission != null && model.ListPermission.Count() > 0)
                    {
                        foreach (var item in model.ListPermission)
                        {
                            modelPermission = new GroupPermission()
                            {
                                GroupPermissionId = Guid.NewGuid().ToString(),
                                GroupId           = modelCreate.GroupId,
                                FunctionId        = item.FunctionId,
                            };
                            listPermission.Add(modelPermission);
                        }
                        db.GroupPermission.AddRange(listPermission);
                    }

                    //luu Log lich su
                    string decription = "Thêm mới nhóm quyền có tên là : " + modelCreate.Name;
                    LogBusiness.SaveLogEvent(db, model.UserId, decription, null);

                    db.SaveChanges();
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    throw new ErrorException(ErrorMessage.ERR001, ex.InnerException);
                }
            }
        }
예제 #11
0
        /// <summary>
        /// Log chấm công
        /// </summary>
        /// <param name="listIdentifiedPerson">List nhân viên nhậ được</param>
        /// <param name="date">Thời gian ghi nhận</param>
        /// <param name="imageLink">Hình ảnh nhận được</param>
        private async Task LogTimeAttendance(TimeAttendanceEntities dbEnti, List <IdentifiedPerson> listIdentifiedPerson, DateTime date, string imageLink)
        {
            List <TimeAttendanceLog> listTimeAttendanceLog = new List <TimeAttendanceLog>();
            var      logDateTo  = DateTimeUtils.ConvertDateFrom(date);
            var      listLogNow = dbEnti.TimeAttendanceLog.Where(r => r.Date == logDateTo).ToList();
            TimeSpan timeSpan;
            TimeSpan timeSpan2;
            int      sophut;

            //Lấy nhân viên có độ chính xác >= mức độ chính xác quy định
            foreach (var item in listIdentifiedPerson)
            {
                if (item.InfoEmployee == null)
                {
                    continue;
                }

                modelTimeAttendanceLog = listLogNow.Where(r => r.EmployeeId.Equals(item.InfoEmployee.EmployeeId)).FirstOrDefault();
                if (modelTimeAttendanceLog != null)
                {
                    timeSpan = (date - modelTimeAttendanceLog.TimeIn.Value);
                    modelTimeAttendanceLog.TimeOut  = date;
                    modelTimeAttendanceLog.ImageOut = imageLink;
                    modelTimeAttendanceLog.Total    = (int)(timeSpan.TotalHours * 60);
                    timeSpan2 = (date - TimeAttendanceStatic.EndTime.Value);
                    modelTimeAttendanceLog.EarlyMinutes = date < TimeAttendanceStatic.EndTime.Value ? (Math.Abs((timeSpan2.Hours * 60)) + Math.Abs(timeSpan2.Minutes)) : 0;
                    modelTimeAttendanceLog.ImageFaceOut = item.ImageFace;
                }
                else
                {
                    timeSpan = (date - TimeAttendanceStatic.StartTime.Value);
                    sophut   = (Math.Abs((timeSpan.Hours * 60)) + Math.Abs(timeSpan.Minutes));
                    modelTimeAttendanceLog = new TimeAttendanceLog()
                    {
                        TimeAttendanceLogId = Guid.NewGuid().ToString(),
                        EmployeeId          = item.InfoEmployee.EmployeeId,
                        Date        = logDateTo,
                        TimeIn      = date,
                        ImageIn     = imageLink,
                        LateMinutes = date < TimeAttendanceStatic.StartTime.Value ? 0 : Math.Abs(sophut),
                        ImageFaceIn = item.ImageFace
                    };
                    listTimeAttendanceLog.Add(modelTimeAttendanceLog);
                }
            }
            if (listTimeAttendanceLog.Count > 0)
            {
                dbEnti.TimeAttendanceLog.AddRange(listTimeAttendanceLog);
            }
            dbEnti.SaveChanges();
        }
예제 #12
0
        public void UpdateStatusGroup(string id, GroupModel model)
        {
            db = new TimeAttendanceEntities();

            using (var trans = db.Database.BeginTransaction())
            {
                try
                {
                    var objectUpdate = db.Group.Find(id);
                    if (objectUpdate != null)
                    {
                        //Cập nhật trạng thái nhóm
                        objectUpdate.Status = (objectUpdate.Status.HasValue && objectUpdate.Status.Value == Constants.Lock ? Constants.UnLock : Constants.Lock);

                        //Cập nhật trạng thái thành viên trong nhóm
                        var  userGroupsUpdate = db.UserGroup.Where(r => r.GroupId.Equals(id));
                        var  listUser         = db.User;
                        User userUpdate;
                        foreach (var item in userGroupsUpdate)
                        {
                            userUpdate = listUser.Where(r => r.UserId.Equals(item.UserId)).FirstOrDefault();
                            if (userUpdate != null)
                            {
                                userUpdate.Status = objectUpdate.Status;
                            }

                            //Xóa Tokens khi khóa tài khoản
                            if (objectUpdate.Status == Constants.Lock)
                            {
                                var deleteAuth = authContext.RefreshTokens.Where(r => r.Subject.Equals(userUpdate.Name));
                                authContext.RefreshTokens.RemoveRange(deleteAuth);
                                authContext.SaveChanges();
                            }
                        }
                    }

                    //luu Log lich su
                    string decription = "Cập nhật trạng thái nhóm có tên là: " + objectUpdate.Name;
                    LogBusiness.SaveLogEvent(db, model.UserId, decription, null);

                    db.SaveChanges();
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    throw new ErrorException(ErrorMessage.ERR001, ex.InnerException);
                }
            }
        }
예제 #13
0
        public void DeleteUser(string id, UserModel model)
        {
            db = new TimeAttendanceEntities();
            var objectDelete = db.User.Where(r => r.UserId.Equals(id) && r.DeleteFlg == Constants.DeleteFalse);

            if (objectDelete == null)
            {
                throw new BusinessException(ErrorMessage.ERR003);
            }
            using (var trans = db.Database.BeginTransaction())
            {
                try
                {
                    var type     = objectDelete.FirstOrDefault().Type;
                    var userName = objectDelete.FirstOrDefault().Name;

                    //Xóa Tokens
                    var deleteAuth = authContext.RefreshTokens.Where(r => r.Subject.Equals(userName));
                    authContext.RefreshTokens.RemoveRange(deleteAuth);
                    authContext.SaveChanges();

                    //Xóa logic tài khoản, gán lại cờ Delete = true
                    objectDelete.First().DeleteFlg = Constants.DeleteTrue;

                    //luu Log lich su
                    string decription = "Xóa thông tin có tên là: " + userName;
                    LogBusiness.SaveLogEvent(db, model.LogUserId, decription, null);

                    db.SaveChanges();
                    trans.Commit();

                    //xóa cache
                    // var RedisConnection = System.Configuration.ConfigurationManager.AppSettings["RedisConnection"];
                    var redis = RedisService <LoginCacheModel> .GetInstance(RedisConnection);

                    LoginCacheModel RefreshToken;
                    RefreshToken = redis.Get <LoginCacheModel>(Constants.ATLogin + userName);
                    if (RefreshToken != null)
                    {
                        redis.Remove(Constants.ATLogin + userName);
                    }
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    throw new ErrorException(ErrorMessage.ERR001, ex.InnerException);
                }
            }
        }
예제 #14
0
        public SearchResultObject <GroupSearchResult> SearchGroupUser(GroupUserSearchCondition searchCondition)
        {
            db = new TimeAttendanceEntities();

            SearchResultObject <GroupSearchResult> searchResult = new SearchResultObject <GroupSearchResult>();

            try
            {
                List <string> userDelete = db.User.AsNoTracking().Where(r => r.DeleteFlg == Constants.DeleteTrue).Select(p => p.UserId).ToList();
                var           listmodel  = (from a in db.Group.AsNoTracking()
                                            join b in db.UserGroup.AsNoTracking() on a.GroupId equals b.GroupId into ab
                                            select new GroupSearchResult()
                {
                    GroupId = a.GroupId,
                    Name = a.Name,
                    HomePage = a.HomePage,
                    Status = a.Status,
                    Description = a.Description,
                    CreateBy = a.CreateBy,
                    CreateDate = a.CreateDate,
                    UpdateBy = a.UpdateBy,
                    UpdateDate = a.UpdateDate,
                    CountUser = ab.Where(r => !userDelete.Any(w => w.Equals(r.UserId))).Count(),
                }).AsQueryable();
                if (!string.IsNullOrEmpty(searchCondition.Name))
                {
                    listmodel = listmodel.Where(r => r.Name.ToLower().Contains(searchCondition.Name.ToLower()));
                }
                if (!string.IsNullOrEmpty(searchCondition.Description))
                {
                    listmodel = listmodel.Where(r => r.Description.ToLower().Contains(searchCondition.Description.ToLower()));
                }
                if (searchCondition.Status.HasValue)
                {
                    listmodel = listmodel.Where(r => r.Status.HasValue && r.Status.Value == searchCondition.Status.Value);
                }

                searchResult.TotalItem  = listmodel.Select(r => r.GroupId).Count();
                searchResult.ListResult = SQLHelpper.OrderBy(listmodel, searchCondition.OrderBy, searchCondition.OrderType).Skip((searchCondition.PageNumber - 1) * searchCondition.PageSize)
                                          .Take(searchCondition.PageSize)
                                          .ToList();

                return(searchResult);
            }
            catch (Exception ex)
            {
                throw new ErrorException(ErrorMessage.ERR001, ex.InnerException);
            }
        }
예제 #15
0
        public static void SaveLogLogout(TimeAttendanceEntities db, string userId)
        {
            int          logType = Constants.LogTypeAccess;
            UserEventLog model   = new UserEventLog()
            {
                UserEventLogId = Guid.NewGuid().ToString(),
                UserId         = userId,
                Description    = "Đăng xuất khỏi hệ thống",
                LogType        = logType,
                CreateDate     = DateTime.Now,
            };

            db.UserEventLog.Add(model);
            db.SaveChanges();
        }
예제 #16
0
        /// <summary>
        /// Log thao tác dữ liệu
        /// </summary>
        /// <param name="db"></param>
        /// <param name="userName"></param>
        /// <param name="content"></param>
        /// <param name="objectId"></param>
        public static void SaveLogEvent(TimeAttendanceEntities db, string userId, string description, string objectId)
        {
            int          logType = Constants.LogTypeDataMining;
            UserEventLog model   = new UserEventLog()
            {
                UserEventLogId = Guid.NewGuid().ToString(),
                UserId         = userId,
                Description    = description,
                LogType        = logType,
                CreateDate     = DateTime.Now
            };

            db.UserEventLog.Add(model);
            //db.SaveChanges();
        }
예제 #17
0
        public void ChangePass(UserModel model)
        {
            db = new TimeAttendanceEntities();

            var modelChange = db.User.Where(r => r.UserId.Equals(model.UserId)).FirstOrDefault();

            //Kiểm tra tồn tại
            if (modelChange == null)
            {
                throw new BusinessException(ErrorMessage.ERR003);
            }

            //Check mật khẩu cũ nhập
            var securityStamp = PasswordUtil.ComputeHash(model.OldPassword + modelChange.Password);

            if (!modelChange.PasswordHash.Equals(securityStamp))
            {
                throw new BusinessException(ErrorMessage.ERR007);
            }
            using (var trans = db.Database.BeginTransaction())
            {
                try
                {
                    modelChange.PasswordHash = PasswordUtil.ComputeHash(model.NewPassword + modelChange.Password);

                    //luu Log lich su
                    string decription = "Thay đổi mật khẩu cá nhân";
                    LogBusiness.SaveLogEvent(db, model.UserId, decription, null);

                    db.SaveChanges();
                    trans.Commit();
                    //xóa cache
                    var redis = RedisService <LoginCacheModel> .GetInstance(RedisConnection);

                    LoginCacheModel RefreshToken;
                    RefreshToken = redis.Get <LoginCacheModel>(Constants.ATLogin + modelChange.Name);
                    if (RefreshToken != null)
                    {
                        redis.Remove(Constants.ATLogin + modelChange.Name);
                    }
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    throw new ErrorException(ErrorMessage.ERR001, ex.InnerException);
                }
            }
        }
예제 #18
0
        public void DeleteGroupUser(string id, GroupModel model)
        {
            db = new TimeAttendanceEntities();

            //Xóa nhóm
            var objectDelete = db.Group.Where(r => r.GroupId.Equals(id));
            var nameGroup    = string.Empty;

            if (objectDelete == null)
            {
                throw new BusinessException(ErrorMessage.ERR005);
            }

            //Xóa thành viên trong bảng liên kết
            var userGroupsDelete = db.UserGroup.AsNoTracking().Where(r => r.GroupId.Equals(id)).ToList();

            if (userGroupsDelete.Count() > 0)
            {
                throw new BusinessException(ErrorMessage.ERR006);
            }

            using (var trans = db.Database.BeginTransaction())
            {
                try
                {
                    nameGroup = objectDelete.FirstOrDefault().Name;
                    //Xóa quyền của nhóm
                    var groupPermissionsDelete = db.GroupPermission.Where(r => r.GroupId.Equals(id));
                    db.GroupPermission.RemoveRange(groupPermissionsDelete);

                    //Xóa nhóm quyền
                    db.Group.RemoveRange(objectDelete);

                    //luu Log lich su
                    string decription = "Xóa thông tin nhóm quyền có tên là: " + nameGroup;
                    LogBusiness.SaveLogEvent(db, model.UserId, decription, null);

                    db.SaveChanges();
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    throw new ErrorException(ErrorMessage.ERR001, ex.InnerException);
                }
            }
        }
예제 #19
0
        public GroupModel GetGroupUserById(string id)
        {
            db = new TimeAttendanceEntities();

            var item = db.Group.Find(id);

            if (item == null)
            {
                throw new BusinessException(ErrorMessage.ERR005);
            }
            try
            {
                GroupModel result = new GroupModel()
                {
                    GroupId     = item.GroupId,
                    Name        = item.Name,
                    Status      = item.Status,
                    HomePage    = item.HomePage,
                    Description = item.Description,
                    CreateBy    = item.CreateBy,
                    CreateDate  = item.CreateDate,
                    UpdateBy    = item.UpdateBy,
                    UpdateDate  = item.UpdateDate,
                };

                List <FunctionModel> listFunction = new List <FunctionModel>();

                listFunction = (from a in db.GroupPermission.AsNoTracking()
                                where a.GroupId.Equals(id)
                                select new FunctionModel
                {
                    FunctionId = a.FunctionId,
                    Select = true,
                }).ToList();

                result.ListPermission = listFunction;

                return(result);
            }
            catch (Exception ex)
            {
                throw new ErrorException(ErrorMessage.ERR001, ex.InnerException);
            }
        }
예제 #20
0
        public void ResetPass(string userId)
        {
            db = new TimeAttendanceEntities();

            using (var trans = db.Database.BeginTransaction())
            {
                try
                {
                    var modelReset = db.User.Where(r => r.UserId.Equals(userId)).FirstOrDefault();
                    var name       = string.Empty;
                    if (modelReset != null)
                    {
                        modelReset.Password     = PasswordUtil.CreatePasswordHash();
                        modelReset.PasswordHash = PasswordUtil.ComputeHash(Constants.PasswordDefault + modelReset.Password);
                        name = modelReset.Name;
                    }

                    db.SaveChanges();
                    trans.Commit();

                    //luu Log lich su
                    string decription = "Lấy lại mật khẩu của user tên là: " + name;
                    LogBusiness.SaveLogEvent(db, userId, decription, null);
                    //xóa cache
                    // var RedisConnection = System.Configuration.ConfigurationManager.AppSettings["RedisConnection"];

                    var redis = RedisService <LoginCacheModel> .GetInstance(RedisConnection);

                    LoginCacheModel RefreshToken;
                    RefreshToken = redis.Get <LoginCacheModel>(Constants.ATLogin + modelReset.Name);
                    if (RefreshToken != null)
                    {
                        redis.Remove(Constants.ATLogin + modelReset.Name);
                    }
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    throw new ErrorException(ErrorMessage.ERR001, ex.InnerException);
                }
            }
        }
예제 #21
0
 public ConfigResult GetConfigResult()
 {
     db = new TimeAttendanceEntities();
     try
     {
         ConfigResult con    = new ConfigResult();
         var          system = db.SystemParam.Where(u => u.ParamName.Equals(Constants.ConfigTimeIn) ||
                                                    u.ParamName.Equals(Constants.ConfigTimeOut) ||
                                                    u.ParamName.Equals(Constants.ConfigPercent) ||
                                                    u.ParamName.Equals(Constants.TimeAttendanceLog)
                                                    ).ToList();
         var ConfigTimeIn      = system.FirstOrDefault(u => u.ParamName.Equals(Constants.ConfigTimeIn));
         var ConfigTimeOut     = system.FirstOrDefault(u => u.ParamName.Equals(Constants.ConfigTimeOut));
         var ConfigPercent     = system.FirstOrDefault(u => u.ParamName.Equals(Constants.ConfigPercent));
         var TimeAttendanceLog = system.FirstOrDefault(u => u.ParamName.Equals(Constants.TimeAttendanceLog));
         if (ConfigTimeIn != null)
         {
             con.TimeIn = ConfigTimeIn.ParamValue;
         }
         if (ConfigTimeOut != null)
         {
             con.TimeOut = ConfigTimeOut.ParamValue;
         }
         if (ConfigPercent != null)
         {
             con.Percent = int.Parse(ConfigPercent.ParamValue);
         }
         if (TimeAttendanceLog != null)
         {
             con.TimeAttendanceLog = int.Parse(TimeAttendanceLog.ParamValue);
         }
         return(con);
     }
     catch (Exception ex)
     {
         return(null);
     }
 }
예제 #22
0
        public LoginEntity Login(string userName, string password)
        {
            db = new TimeAttendanceEntities();
            LoginEntity loginEntity = new LoginEntity();

            try
            {
                var userLogin = (from a in db.User.AsNoTracking()
                                 where a.Name.Equals(userName) && a.DeleteFlg == 0
                                 //join b in db.UserGroups.AsNoTracking() on a.UserId equals b.UserId into ab
                                 //from abv in ab.DefaultIfEmpty()
                                 select new
                {
                    a.UserId,
                    // a.UnitId,
                    a.Name,
                    a.FullName,
                    a.BirthDay,
                    // a.Agency,
                    a.Email,
                    a.Role,
                    a.PhoneNumber,
                    a.Password,
                    a.PasswordHash,
                    a.Status,
                    a.Type,
                    a.Description,
                    a.ImageLink,
                    a.CreateBy,
                    a.CreateDate,
                    a.UpdateBy,
                    a.UpdateDate,
                    a.IsAdmin,
                    //abv.GroupId,
                }).FirstOrDefault();
                if (userLogin != null)
                {
                    if (userLogin.Status == Constants.Lock)
                    {
                        //Tài khoản bị khóa. Lên hệ quản trị để kích hoạt lại
                        loginEntity.ResponseCode = -6;
                    }
                    else
                    {
                        var securityStamp = PasswordUtil.ComputeHash(password + userLogin.Password);
                        if (userLogin.PasswordHash.Equals(securityStamp))
                        {
                            UserEntity userEntity = new UserEntity()
                            {
                                UserName = userLogin.Name,
                                UserId   = userLogin.UserId,
                                FullName = userLogin.FullName,
                                Role     = "1",
                                //UnitId = userLogin.UnitId,
                                //GroupId = userLogin.GroupId,
                                ImageLink = userLogin.ImageLink,
                                //Agency = userLogin.Agency,
                                Type        = userLogin.Type,
                                IsAdmin     = userLogin.IsAdmin.ToString(),
                                securityKey = PasswordUtil.CreatePasswordHash(),
                            };
                            userEntity.ListPermission = new List <string>();
                            userEntity.ListPermission = (from c in db.UserPermission.AsNoTracking()
                                                         where c.UserId.Equals(userLogin.UserId)
                                                         join d in db.Function.AsNoTracking() on c.FunctionId equals d.FunctionId
                                                         select d.Code).ToList <string>();

                            userEntity.HomePage = (from r in db.Group.AsNoTracking()
                                                   join a in db.UserGroup on r.GroupId equals a.GroupId
                                                   where a.UserId.Equals(userEntity.UserId)
                                                   select r.HomePage).FirstOrDefault();

                            loginEntity.UserInfor = userEntity;

                            LogBusiness.SaveLogLogin(db, userEntity.UserId);
                        }
                        else
                        {
                            // Mật khẩu không đúng
                            loginEntity.ResponseCode = -5;
                        }
                    }
                }
                else
                {
                    // tài khoản không có trong hệ thống
                    loginEntity.ResponseCode = -4;
                }
            }
            catch (Exception e)
            {
                Console.Write(e.ToString());
            }

            return(loginEntity);
        }
예제 #23
0
        public List <FunctionModel> GetFunctionByUser(string id)
        {
            try
            {
                db = new TimeAttendanceEntities();
                List <FunctionModel> listFunction = new List <FunctionModel>();
                var listFunc = (from a in db.UserPermission.AsNoTracking()
                                where a.UserId.Equals(id)
                                join c in db.Function.AsNoTracking() on a.FunctionId equals c.FunctionId
                                orderby c.Name ascending
                                select new
                {
                    c.FunctionId,
                    c.GroupFunctionId,
                    c.Code,
                    c.Name,
                    c.Description
                }).ToList();
                var           listGroup = db.GroupFunction.AsNoTracking().ToList();
                FunctionModel modelAdd;
                int           index = 1;
                foreach (var item in listGroup)
                {
                    var listFuncSelect = listFunc.Where(r => r.GroupFunctionId.Equals(item.GroupFunctionId));
                    if (listFuncSelect != null && listFuncSelect.Count() > 0)
                    {
                        modelAdd = new FunctionModel()
                        {
                            Index           = index.ToString(),
                            FunctionId      = item.GroupFunctionId,
                            GroupFunctionId = string.Empty,
                            Code            = item.Code,
                            Name            = item.Name,
                            Description     = item.Description,
                            Select          = false,
                        };
                        listFunction.Add(modelAdd);

                        int indexF = 1;
                        foreach (var itemFunc in listFuncSelect)
                        {
                            modelAdd = new FunctionModel()
                            {
                                Index           = index.ToString() + "." + indexF.ToString(),
                                FunctionId      = itemFunc.FunctionId,
                                GroupFunctionId = item.GroupFunctionId,
                                Code            = itemFunc.Code,
                                Name            = itemFunc.Name,
                                Description     = itemFunc.Description,
                                Select          = false,
                            };
                            listFunction.Add(modelAdd);
                            indexF++;
                        }

                        index++;
                    }
                }

                return(listFunction);
            }
            catch (Exception ex)
            {
                throw new ErrorException(ErrorMessage.ERR001, ex.InnerException);
            }
        }
예제 #24
0
 public void UpdateConfigResult(ConfigResult con)
 {
     db = new TimeAttendanceEntities();
     try
     {
         var ConfigTimeIn      = db.SystemParam.FirstOrDefault(u => u.ParamName.Equals(Constants.ConfigTimeIn));
         var ConfigTimeOut     = db.SystemParam.FirstOrDefault(u => u.ParamName.Equals(Constants.ConfigTimeOut));
         var ConfigPercent     = db.SystemParam.FirstOrDefault(u => u.ParamName.Equals(Constants.ConfigPercent));
         var TimeAttendanceLog = db.SystemParam.FirstOrDefault(u => u.ParamName.Equals(Constants.TimeAttendanceLog));
         if (ConfigTimeIn != null)
         {
             ConfigTimeIn.ParamValue = con.TimeIn;
         }
         else
         {
             ConfigTimeIn = new SystemParam();
             ConfigTimeIn.SystemParamId = Guid.NewGuid().ToString();;
             ConfigTimeIn.ParamValue    = con.TimeIn;
             ConfigTimeIn.ParamName     = Constants.ConfigTimeIn;
             db.SystemParam.Add(ConfigTimeIn);
         }
         if (ConfigTimeOut != null)
         {
             ConfigTimeOut.ParamValue = con.TimeOut;
         }
         else
         {
             ConfigTimeOut = new SystemParam();
             ConfigTimeOut.SystemParamId = Guid.NewGuid().ToString();;
             ConfigTimeOut.ParamValue    = con.TimeOut;
             ConfigTimeOut.ParamName     = Constants.ConfigTimeOut;
             db.SystemParam.Add(ConfigTimeOut);
         }
         if (ConfigPercent != null)
         {
             ConfigPercent.ParamValue = con.Percent.ToString();
         }
         else
         {
             ConfigPercent = new SystemParam();
             ConfigPercent.SystemParamId = Guid.NewGuid().ToString();;
             ConfigPercent.ParamValue    = con.Percent.ToString();
             ConfigPercent.ParamName     = Constants.ConfigPercent;
             db.SystemParam.Add(ConfigPercent);
         }
         if (TimeAttendanceLog != null)
         {
             TimeAttendanceLog.ParamValue = con.TimeAttendanceLog.ToString();
         }
         else
         {
             TimeAttendanceLog = new SystemParam();
             TimeAttendanceLog.SystemParamId = Guid.NewGuid().ToString();;
             TimeAttendanceLog.ParamValue    = con.TimeAttendanceLog.ToString();
             TimeAttendanceLog.ParamName     = Constants.TimeAttendanceLog;
             db.SystemParam.Add(TimeAttendanceLog);
         }
         db.SaveChanges();
         TimeAttendanceStatic.ConfidenceFix = con.Percent;
         TimeAttendanceStatic.TimeIn        = con.TimeIn;
         TimeAttendanceStatic.TimeOut       = con.TimeOut;
     }
     catch (Exception ex)
     {
     }
 }
예제 #25
0
        /// <summary>
        /// Import khách hàng từ file mẫu
        /// </summary>
        public void ImportEmployee()
        {
            TimeAttendanceEntities db          = new TimeAttendanceEntities();
            ExcelEngine            excelEngine = new ExcelEngine();

            IApplication application = excelEngine.Excel;

            IWorkbook workbook = application.Workbooks.Open(HttpContext.Current.Server.MapPath("/Template/MSB.xls"));

            IWorksheet sheet = workbook.Worksheets[0];

            //try
            //{
            sheet = workbook.Worksheets[0];
            var listDep = db.Department.Select(r => new { r.DepartmentId, r.Name }).ToList();

            if (sheet.Columns.Count() >= 5)
            {
                List <EmployeeModel> listEmployee       = new List <EmployeeModel>();
                List <string>        listDepartmentName = new List <string>();
                EmployeeModel        modelEmployee;
                int    count            = 0;
                int    total            = 0;
                string pathFolder       = "fileUpload/ImageEmployee/";
                string pathFolderServer = HostingEnvironment.MapPath("~/" + pathFolder);
                for (int indexRow = 4; indexRow <= sheet.Rows.Count(); indexRow++)
                {
                    total++;
                    modelEmployee      = new EmployeeModel();
                    modelEmployee.Code = sheet.Range[indexRow, 3].Value.ToString().Trim();
                    modelEmployee.Name = sheet.Range[indexRow, 4].Value.ToString().Trim();
                    listDepartmentName.Add(sheet.Range[indexRow, 5].Value.ToString().Trim());
                    var itemDep = listDep.Where(r => r.Name.ToLower().Contains(sheet.Range[indexRow, 5].Value.ToString().Trim().ToLower())).FirstOrDefault();
                    if (itemDep != null)
                    {
                        modelEmployee.DepartmentId = itemDep.DepartmentId;
                    }
                    if (sheet.Range[indexRow, 6].HasDateTime)
                    {
                        modelEmployee.InComeDate = sheet.Range[indexRow, 6].DateTime;
                    }
                    else
                    {
                        modelEmployee.InComeDate = DateTime.ParseExact(sheet.Range[indexRow, 6].Text, "dd-MM-yyyy", CultureInfo.InvariantCulture);
                    }
                    listEmployee.Add(modelEmployee);
                }

                //listDepartmentName = listDepartmentName.GroupBy(r => r).Select(r=>r.Key).ToList();
                //Department department;
                //foreach (var item in listDepartmentName)
                //{
                //    department = new Department()
                //    {
                //        DepartmentId = Guid.NewGuid().ToString(),
                //        Name = item
                //    };
                //    db.Department.Add(department);
                //}
                //db.SaveChanges();

                IEnumerable <string> listFile         = Directory.EnumerateFiles(HostingEnvironment.MapPath("~/fileUpload/ImageUserTemp/"), "*.*", SearchOption.AllDirectories).Where(r => r.ToLower().Contains(".jpg") || r.ToLower().Contains(".png")).ToList();
                EmployeeBusiness     employeeBusiness = new EmployeeBusiness();
                Employee             employee;
                int countOk    = 0;
                int countError = 0;
                foreach (var item in listEmployee)
                {
                    try
                    {
                        string file = listFile.Where(r => r.Contains(item.Code.Replace("MSB", ""))).FirstOrDefault();
                        if (file != null)
                        {
                            FileInfo fileInfo = new FileInfo(file);
                            fileInfo.CopyTo(HostingEnvironment.MapPath("~/fileUpload/ImageEmployee/" + fileInfo.Name), true);
                            item.LinkImage  = "fileUpload/ImageEmployee/" + fileInfo.Name;
                            item.CreateBy   = "US000001";
                            item.JobTitleId = "2a6ec39b-368c-488b-a019-9f171248f37a";
                            item.Gender     = "2";
                            employeeBusiness.CreateEmployee(item);
                        }
                        countOk++;
                    }
                    catch (Exception ex)
                    {
                        countError++;
                    }
                    Task.Delay(50000);
                }
            }
        }
예제 #26
0
        public void UpdateUser(UserModel model)
        {
            db = new TimeAttendanceEntities();
            var modelEdit = db.User.Where(r => r.UserId.Equals(model.UserId) && r.DeleteFlg == Constants.DeleteFalse).FirstOrDefault();

            if (modelEdit == null)
            {
                throw new BusinessException(ErrorMessage.ERR003);
            }
            if (modelEdit.Name != model.Name)
            {
                if (this.IsExistedUser(model.Name))
                {
                    throw new BusinessException(ErrorMessage.ERR002);
                }
            }

            using (var trans = db.Database.BeginTransaction())
            {
                try
                {
                    var userNameOld = modelEdit.Name;

                    modelEdit.FullName    = model.FullName;
                    modelEdit.BirthDay    = model.BirthDay;
                    modelEdit.Agency      = model.Agency;
                    modelEdit.Email       = model.Email;
                    modelEdit.UnitId      = model.UnitId;
                    modelEdit.Role        = model.Role;
                    modelEdit.Type        = model.Type;
                    modelEdit.PhoneNumber = model.PhoneNumber;
                    modelEdit.Address     = model.Address;
                    modelEdit.Description = model.Description;
                    modelEdit.ImageLink   = model.ImageLink;
                    modelEdit.UpdateBy    = model.UpdateBy;
                    modelEdit.UpdateDate  = DateTime.Now;

                    if (!string.IsNullOrEmpty(model.GroupId))
                    {
                        var itemDelete = db.UserGroup.Where(r => r.UserId.Equals(model.UserId));
                        db.UserGroup.RemoveRange(itemDelete);
                        UserGroup userGroup = new UserGroup()
                        {
                            UserGroupId = Guid.NewGuid().ToString(),
                            GroupId     = model.GroupId,
                            UserId      = model.UserId,
                        };
                        db.UserGroup.Add(userGroup);
                    }

                    //Thêm dánh sách quyền cho tài khoản
                    List <UserPermission> listPermission = new List <UserPermission>();
                    UserPermission        modelPermission;
                    //Xóa quyền cũ
                    var listPermissionDelete = db.UserPermission.Where(r => r.UserId.Equals(model.UserId));
                    db.UserPermission.RemoveRange(listPermissionDelete);

                    //Thêm quyền mới
                    if (model.ListPermission != null && model.ListPermission.Count() > 0)
                    {
                        foreach (var item in model.ListPermission)
                        {
                            modelPermission = new UserPermission()
                            {
                                UserPermissionId = Guid.NewGuid().ToString(),
                                UserId           = model.UserId,
                                FunctionId       = item.FunctionId,
                            };
                            listPermission.Add(modelPermission);
                        }
                        db.UserPermission.AddRange(listPermission);
                    }

                    //luu Log lich su
                    string decription = String.Empty;
                    if (userNameOld.ToLower() == modelEdit.Name.ToLower())
                    {
                        decription = "Cập nhật thông tin có tên là: " + userNameOld;
                    }
                    else
                    {
                        decription = "Cập nhật thông tin có tên ban đầu là:  " + userNameOld + " thành " + model.Name;;
                    }
                    LogBusiness.SaveLogEvent(db, model.LogUserId, decription, null);

                    db.SaveChanges();
                    trans.Commit();

                    //xóa cache
                    var redis = RedisService <LoginCacheModel> .GetInstance(RedisConnection);

                    LoginCacheModel RefreshToken;
                    RefreshToken = redis.Get <LoginCacheModel>(Constants.ATLogin + userNameOld);
                    if (RefreshToken != null)
                    {
                        redis.Remove(Constants.ATLogin + userNameOld);
                    }
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    throw new ErrorException(ErrorMessage.ERR001, ex.InnerException);
                }
            }
        }
        public List <InfoNotificationResult> LogAttendanceFuntion(IEnumerable <IdentifyResult> listIdentifiedPerson, DateTime date, string imageLink, string CameraIPAdress)
        {
            string JobTitle       = "";
            string DepartmentName = "";
            string idGuid         = "";
            List <InfoNotificationResult> lstRs = new List <InfoNotificationResult>();
            InfoNotificationResult        itemLog;

            if (db == null)
            {
                db = new TimeAttendanceEntities(_connStr);
            }
            try
            {
                List <AttendanceLog> listTimeAttendanceLog = new List <AttendanceLog>();
                var      logDateTo = date;
                TimeSpan timeSpan;
                foreach (var item in listIdentifiedPerson)
                {
                    itemPersonId = "";
                    if (item.Candidates.Length > 0)
                    {
                        try
                        {
                            itemPersonId = item.Candidates[0].PersonId.ToString();
                        }
                        catch (Exception)
                        { }
                    }

                    emp = db.Employee.FirstOrDefault(u => u.FaceId.Equals(itemPersonId));
                    if (emp != null)
                    {
                        #region [lấy phòng và chức vụ]
                        try
                        {
                            JobTitle = db.JobTitle.FirstOrDefault(u => u.JobTitleId.Equals(emp.JobTitleId)).Name;
                        }
                        catch (Exception)
                        { JobTitle = "Unknown"; }
                        try
                        {
                            DepartmentName = db.Department.FirstOrDefault(u => u.DepartmentId.Equals(emp.DepartmentId)).Name;
                        }
                        catch (Exception)
                        { DepartmentName = "Unknown"; }
                    }
                    else
                    {
                        DepartmentName = "Unknown";
                        JobTitle       = "Unknown";
                    }

                    #endregion

                    idGuid  = Guid.NewGuid().ToString();
                    itemLog = new InfoNotificationResult();
                    itemLog.AttendanceLogId = idGuid;
                    itemLog.Code            = emp != null ? emp.Code : "Unknown";
                    itemLog.Name            = emp != null ? emp.Name : "Unknown";
                    itemLog.DepartmentName  = DepartmentName;
                    itemLog.JobTitle        = JobTitle;
                    itemLog.ImageLink       = imageLink;
                    itemLog.DateLog         = logDateTo.ToString("dd/MM/yyyy");
                    itemLog.TimeLog         = logDateTo.ToString("HH:mm:ss");
                    itemLog.Confidence      = ((item.Candidates.Length > 0) ? ((float)(item.Candidates[0].Confidence)) : 0);
                    lstRs.Add(itemLog);

                    timeSpan           = (date - TimeAttendanceStatic.StartTime.Value);
                    modelAttendanceLog = new AttendanceLog()
                    {
                        AttendanceLogId = idGuid,
                        EmployeeId      = emp != null ? emp.EmployeeId : "Unknown",
                        Date            = logDateTo,
                        ImageLink       = imageLink,
                        CameraIPAdress  = CameraIPAdress,
                        Confidence      = (item.Candidates.Length > 0) ? item.Candidates[0].Confidence : 0,
                        FaceCount       = listIdentifiedPerson.Count(),
                        ImageFace       = imageLink,
                    };
                    listTimeAttendanceLog.Add(modelAttendanceLog);
                }
                if (listTimeAttendanceLog.Count > 0)
                {
                    db.AttendanceLog.AddRange(listTimeAttendanceLog);
                }
                db.SaveChanges();
            }
            catch (Exception ex)
            { }
            return(lstRs);
        }
예제 #28
0
        public SearchResultObject <UserSearchResult> SearchUserCustomer(UserSearchCondition searchCondition)
        {
            db = new TimeAttendanceEntities();
            SearchResultObject <UserSearchResult> searchResult = new SearchResultObject <UserSearchResult>();

            try
            {
                var listmodel = (from a in db.User.AsNoTracking()
                                 where a.DeleteFlg == Constants.DeleteFalse && (string.IsNullOrEmpty(searchCondition.Type) || a.Type.Equals(searchCondition.Type))
                                 join c in db.UserGroup.AsNoTracking() on a.UserId equals c.UserId into ac
                                 from acv in ac.DefaultIfEmpty()
                                 join d in db.Group.AsNoTracking() on acv.GroupId equals d.GroupId into cd
                                 from cdv in cd.DefaultIfEmpty()
                                 select new UserSearchResult
                {
                    UserId = a.UserId,
                    UnitId = a.UnitId,
                    Name = a.Name,
                    FullName = a.FullName,
                    BirthDay = a.BirthDay,
                    Agency = a.Agency,
                    Email = a.Email,
                    Role = a.Role,
                    PhoneNumber = a.PhoneNumber,
                    Status = a.Status,
                    Description = a.Description,
                    ImageLink = a.ImageLink,
                    Address = a.Address,
                    CreateBy = a.CreateBy,
                    CreateDate = a.CreateDate,
                    UpdateBy = a.UpdateBy,
                    UpdateDate = a.UpdateDate,
                    GroupId = acv.GroupId,
                    GroupName = cdv != null ? cdv.Name : string.Empty,
                    Type = a.Type,
                }).AsQueryable();

                if (!string.IsNullOrEmpty(searchCondition.GroupId))
                {
                    listmodel = listmodel.Where(r => r.GroupId.Equals(searchCondition.GroupId));
                }
                if (!string.IsNullOrEmpty(searchCondition.Name))
                {
                    listmodel = listmodel.Where(r => r.Name.ToUpper().Contains(searchCondition.Name.ToUpper()));
                }
                if (!string.IsNullOrEmpty(searchCondition.FullName))
                {
                    listmodel = listmodel.Where(r => r.FullName.ToUpper().Contains(searchCondition.FullName.ToUpper()));
                }
                if (searchCondition.Status.HasValue)
                {
                    listmodel = listmodel.Where(r => r.Status.HasValue && r.Status.Value == searchCondition.Status.Value);
                }
                if (!string.IsNullOrEmpty(searchCondition.UnitId))
                {
                    listmodel = listmodel.Where(r => r.UnitId.Equals(searchCondition.UnitId));
                }
                if (!string.IsNullOrEmpty(searchCondition.PhoneNumber))
                {
                    listmodel = listmodel.Where(r => r.PhoneNumber.ToUpper().Contains(searchCondition.PhoneNumber.ToUpper()));
                }
                if (searchCondition.Status.HasValue)
                {
                    listmodel = listmodel.Where(r => r.Status.HasValue && r.Status.Value == searchCondition.Status.Value);
                }

                searchResult.TotalItem = listmodel.Select(r => r.UserId).Count();
                var listResult = SQLHelpper.OrderBy(listmodel, searchCondition.OrderBy, searchCondition.OrderType).Skip((searchCondition.PageNumber - 1) * searchCondition.PageSize)
                                 .Take(searchCondition.PageSize)
                                 .ToList();
                searchResult.ListResult = listResult;
            }

            catch (Exception ex)
            {
                throw new ErrorException(ErrorMessage.ERR001, ex.InnerException);
            }
            return(searchResult);
        }
 public void LogTimeAttendanceFuntion(IEnumerable <IdentifyResult> listIdentifiedPerson, DateTime date, string imageLink)
 {
     try
     {
         if (db == null)
         {
             db = new TimeAttendanceEntities(_connStr);
         }
         List <TimeAttendanceLog> listTimeAttendanceLog = new List <TimeAttendanceLog>();
         var      logDateTo  = DateTimeUtils.ConvertDateFrom(date);
         var      listLogNow = db.TimeAttendanceLog.Where(r => r.Date == logDateTo.Date);
         TimeSpan timeSpan;
         TimeSpan timeSpan2;
         int      sophut;
         //Lấy nhân viên có độ chính xác >= mức độ chính xác quy định
         foreach (var item in listIdentifiedPerson)
         {
             if (item.Candidates.Length > 0)
             {
                 itemPersonId = item.Candidates[0].PersonId.ToString();
                 emp          = db.Employee.FirstOrDefault(u => u.FaceId.Equals(itemPersonId));
                 if (emp != null)
                 {
                     modelTimeAttendanceLog = listLogNow.FirstOrDefault(r => r.EmployeeId.Equals(emp.EmployeeId));
                     if (modelTimeAttendanceLog != null)
                     {
                         timeSpan = (date - modelTimeAttendanceLog.TimeIn.Value);
                         modelTimeAttendanceLog.TimeOut  = date;
                         modelTimeAttendanceLog.ImageOut = imageLink;
                         modelTimeAttendanceLog.Total    = (int)(timeSpan.TotalHours * 60);
                         timeSpan2 = (date - TimeAttendanceStatic.EndTime.Value);
                         modelTimeAttendanceLog.EarlyMinutes = date < TimeAttendanceStatic.EndTime.Value ? (Math.Abs((timeSpan2.Hours * 60)) + Math.Abs(timeSpan2.Minutes)) : 0;
                         modelTimeAttendanceLog.ImageFaceOut = imageLink;
                     }
                     else
                     {
                         timeSpan = (date - TimeAttendanceStatic.StartTime.Value);
                         sophut   = (Math.Abs((timeSpan.Hours * 60)) + Math.Abs(timeSpan.Minutes));
                         modelTimeAttendanceLog = new TimeAttendanceLog()
                         {
                             TimeAttendanceLogId = Guid.NewGuid().ToString(),
                             EmployeeId          = emp.EmployeeId,
                             Date        = logDateTo,
                             TimeIn      = date,
                             ImageIn     = imageLink,
                             LateMinutes = date < TimeAttendanceStatic.StartTime.Value ? 0 : Math.Abs(sophut),
                             ImageFaceIn = imageLink
                         };
                         var isExisted = (from r in db.TimeAttendanceLog.AsNoTracking()
                                          where r.Date == logDateTo.Date && r.EmployeeId.Equals(emp.EmployeeId)
                                          select r.TimeAttendanceLogId).Count() > 0;
                         if (!isExisted)
                         {
                             listTimeAttendanceLog.Add(modelTimeAttendanceLog);
                         }
                     }
                 }
             }
         }
         if (listTimeAttendanceLog.Count > 0)
         {
             db.TimeAttendanceLog.AddRange(listTimeAttendanceLog);
         }
         db.SaveChanges();
     }
     catch (Exception ex1)
     {
     }
 }
예제 #30
0
        public void CreateUser(UserModel model)
        {
            db = new TimeAttendanceEntities();
            if (this.IsExistedUser(model.Name))
            {
                throw new BusinessException(ErrorMessage.ERR002);
            }
            using (var trans = db.Database.BeginTransaction())
            {
                try
                {
                    User modelCreate = new User()
                    {
                        UserId      = Guid.NewGuid().ToString(),
                        Name        = model.Name,
                        FullName    = model.FullName,
                        BirthDay    = model.BirthDay,
                        Agency      = model.Agency,
                        Email       = model.Email,
                        UnitId      = model.UnitId,
                        Role        = model.Role,
                        Type        = model.Type,
                        PhoneNumber = model.PhoneNumber,
                        Address     = model.Address,
                        Status      = Constants.UnLock,
                        Description = model.Description,
                        ImageLink   = model.ImageLink,
                        CreateBy    = model.CreateBy,
                        CreateDate  = DateTime.Now,
                    };
                    modelCreate.Password     = PasswordUtil.CreatePasswordHash();
                    modelCreate.PasswordHash = PasswordUtil.ComputeHash(Constants.PasswordDefault + modelCreate.Password);

                    db.User.Add(modelCreate);

                    if (!string.IsNullOrEmpty(model.GroupId))
                    {
                        UserGroup userGroup = new UserGroup()
                        {
                            UserGroupId = Guid.NewGuid().ToString(),
                            GroupId     = model.GroupId,
                            UserId      = modelCreate.UserId,
                        };
                        db.UserGroup.Add(userGroup);
                    }

                    //Thêm dánh sách quyền cho tài khoản
                    List <UserPermission> listPermission = new List <UserPermission>();
                    UserPermission        modelPermission;
                    if (model.ListPermission != null && model.ListPermission.Count() > 0)
                    {
                        foreach (var item in model.ListPermission)
                        {
                            modelPermission = new UserPermission()
                            {
                                UserPermissionId = Guid.NewGuid().ToString(),
                                UserId           = modelCreate.UserId,
                                FunctionId       = item.FunctionId,
                            };
                            listPermission.Add(modelPermission);
                        }
                        db.UserPermission.AddRange(listPermission);
                    }

                    //luu Log lich su
                    string decription = "Thêm mới có tên là: " + model.Name;
                    LogBusiness.SaveLogEvent(db, model.LogUserId, decription, model.ViolationEventId);

                    db.SaveChanges();
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    throw new ErrorException(ErrorMessage.ERR001, ex.InnerException);
                }
            }
        }