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); } }
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) { } }
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); }
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); } } }
/// <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(); }
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); } } }
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); } } }
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); } }
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(); }
/// <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(); }
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); } } }
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); } } }
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); } }
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); } } }
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); } }
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); }
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); } }
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) { } }
/// <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); } } }
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); }
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) { } }
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); } } }