public static void CreateOrUpdateSysPermission(string permissionCode, string moduleCode) { Task.Run(() => { if (string.IsNullOrEmpty(permissionCode)) { return; } if (_sysPermissions.Any(i => i.Code == permissionCode && i.ModuleCode == moduleCode)) { return; } using (var db = new MoneyNoteDbContext()) { var existed = db.SysPermissions.FirstOrDefault(i => i.Code == permissionCode && i.ModuleCode == moduleCode); if (existed == null) { db.SysPermissions.Add(new SysPermission { Code = permissionCode, ModuleCode = moduleCode }); db.SaveChanges(); } } }); }
public IActionResult GetTree() { List <CmsCategory.Dto> allCat = new List <CmsCategory.Dto>(); int uncategoryItems; using (var db = new MoneyNoteDbContext()) { allCat = db.CmsCategories.Select(i => new CmsCategory.Dto { Id = i.Id, ItemsCount = i.ItemsCount, ParentId = i.ParentId, Title = i.Title }).ToList(); uncategoryItems = db.CmsContents.Where(i => db.CmsRelations.Select(r => r.ContentId).Distinct().Contains(i.Id) == false) .Count(); } return(Json(new JsonResponse <CategoryTree> { data = new CategoryTree { Data = allCat, UncategoryItemsCount = uncategoryItems } })); }
public CategoryJsGridResult ListCategory(JsGridFilter filter) { filter = filter ?? new JsGridFilter(); filter.categoryIds = filter.categoryIds ?? new List <Guid>(); filter.categoryIds.Where(i => i != null && i != Guid.Empty).ToList(); List <CmsCategory> lst; using (var db = new MoneyNoteDbContext()) { var query = db.CmsCategories.AsQueryable(); if (!string.IsNullOrEmpty(filter.title)) { query = query.Where(i => i.Title.Contains(filter.title)); } if (filter.findRootItem != null && filter.findRootItem == true) { query = query.Where(i => i.ParentId == null || i.ParentId == Guid.Empty); } lst = query.Distinct().ToList(); return(new CategoryJsGridResult { data = lst, itemsCount = lst.Count }); } }
public IActionResult CreateOrUpdate([FromBody] CmsCategory data) { if (string.IsNullOrEmpty(data.Title)) { return(Json(new JsonResponse <string> { code = 1, message = "Title can not be empty" })); } if (data.Id == null || data.Id == Guid.Empty) { data.Id = Guid.NewGuid(); } using (var db = new MoneyNoteDbContext()) { var exited = db.CmsCategories.FirstOrDefault(i => i.Id == data.Id); if (exited == null) { db.CmsCategories.Add(data); } else { exited.ParentId = data.ParentId; exited.Title = data.Title; exited.IsDeleted = data.IsDeleted; } db.SaveChanges(); } return(Json(new JsonResponse <CmsCategory> { data = data })); }
public static void CreateOrUpdateSysModule(string code) { Task.Run(() => { if (string.IsNullOrEmpty(code)) { return; } if (_sysModules.Any(i => i.Code == code)) { return; } using (var db = new MoneyNoteDbContext()) { var existed = db.SysModules.FirstOrDefault(i => i.Code == code); if (existed == null) { db.SysModules.Add(new SysModule { Code = code }); db.SaveChanges(); } } }); }
public static void InitSupperAdmin() { lock (_lock) { using (var db = new MoneyNoteDbContext()) { var user = db.Users.FirstOrDefault(i => i.Username.Equals("supperadmin")); if (user == null) { db.Users.Add(new User { Username = "******", Password = HashPassword("123@123") }); db.SaveChanges(); } try { _userAlcs = db.UserAcls.Where(i => i.IsDeleted == 0).ToList(); _sysModules = db.SysModules.Where(i => i.IsDeleted == 0).ToList(); _sysPermissions = db.SysPermissions.Where(i => i.IsDeleted == 0).ToList(); } catch { } } var tempAcls = _userAlcs.GroupBy(i => i.UserId).Select(i => new { UserId = i.Key, Acls = i.DefaultIfEmpty() }).ToList(); foreach (var itm in tempAcls) { _lookupUserAcls.Add(itm.UserId, itm.Acls.ToList()); } } }
public IActionResult SelectAll([FromBody] JsGridFilter filter) { filter = filter ?? new JsGridFilter(); filter.categoryIds = filter.categoryIds ?? new List <Guid>(); filter.categoryIds.Where(i => i != null && i != Guid.Empty).ToList(); long itemsCount = 0; List <User> data = new List <User>(); List <UserAcl.Dto> acls = new List <UserAcl.Dto>(); using (var db = new MoneyNoteDbContext()) { var query = db.Users.Where(i => i.IsDeleted == 0); if (!string.IsNullOrEmpty(filter.title)) { query = query.Where(i => i.Username.Contains(filter.title)); } if (filter.findRootItem != null && filter.findRootItem == true) { query = query.Where(i => i.ParentId == null || i.ParentId == Guid.Empty); } if (!string.IsNullOrEmpty(filter.moduleCode)) { query = query.Join(db.UserAcls, u => u.Id, acl => acl.UserId, (u, acl) => new { u, acl }) .Where(i => i.acl.ModuleCode == filter.moduleCode).Select(i => i.u).Distinct(); } if (!string.IsNullOrEmpty(filter.permissionCode)) { query = query.Join(db.UserAcls, u => u.Id, acl => acl.UserId, (u, acl) => new { u, acl }) .Where(i => i.acl.PermissionCode == filter.permissionCode).Select(i => i.u).Distinct(); } query = query.Distinct().OrderByDescending(i => i.CreatedAt); itemsCount = query.LongCount(); data = query.Skip((filter.pageIndex - 1) * filter.pageSize).Take(filter.pageSize).ToList(); var userIds = data.Select(i => i.Id).Distinct().ToList(); acls = db.UserAcls.Where(i => userIds.Contains(i.UserId)) .Select(i => new UserAcl.Dto { UserId = i.UserId, ModuleCode = i.ModuleCode, PermissionCode = i.PermissionCode }) .Distinct().ToList(); return(Json(new JsonResponse <UserJsGridResult> { data = new UserJsGridResult { data = data, itemsCount = itemsCount, ListUserAcl = acls } })); } }
public IActionResult CreateOrUpdate([FromBody] CmsContent data) { if (string.IsNullOrEmpty(data.Title)) { return(Json(new JsonResponse <string> { code = 1, message = "Title can not be empty" })); } if (data.Id == null || data.Id == Guid.Empty) { data.Id = Guid.NewGuid(); } data = data.CalculateThumbnail(); using (var db = new MoneyNoteDbContext()) { var exited = db.CmsContents.FirstOrDefault(i => i.Id == data.Id); if (exited == null) { data.CountView = 0; db.CmsContents.Add(data); } else { exited.ParentId = data.ParentId; exited.Title = data.Title; exited.Thumbnail = data.Thumbnail; exited.UrlRef = data.UrlRef; exited.Description = data.Description; exited.IsDeleted = data.IsDeleted; exited.ThumbnailWidth = data.ThumbnailWidth; exited.ThumbnailHeight = data.ThumbnailHeight; exited.VideoWidth = data.VideoWidth; exited.VideoHeight = data.VideoHeight; exited.IsPublished = data.IsPublished; } db.SaveChanges(); var existed = db.CmsRelations.Where(i => i.ContentId == data.Id).ToList(); db.RemoveRange(existed); db.SaveChanges(); db.AddRange(data.CategoryIds.Select(c => new CmsRelation { ContentId = data.Id, CategoryId = c }).ToList()); db.SaveChanges(); } return(Json(new JsonResponse <CmsContent> { data = data })); }
public IActionResult SelectAllPermission() { using (var db = new MoneyNoteDbContext()) { var query = db.SysPermissions.OrderBy(i => i.ModuleCode).ThenBy(i => i.Code).Where(i => i.IsDeleted == 0); return(Json(new JsonResponse <List <SysPermission> > { data = query.ToList() })); } }
public override void JobToDo() { var map = GetMapping(); foreach (var m in map) { var vidsInChanl = _crawler.CrawlChannel(m.Key); var cateId = Guid.Parse(m.Value); Task.Run(() => { try { using (var db = new MoneyNoteDbContext()) { db.ChangeTracker.AutoDetectChangesEnabled = false; foreach (var v in vidsInChanl) { var exited = db.CmsContents.FirstOrDefault(i => i.Title == v.Title); var cid = v.Id; if (exited == null) { cid = v.Id; db.CmsContents.Add(v); } else { cid = exited.Id; } var r = db.CmsRelations.Where(i => i.ContentId == cid && i.CategoryId == cateId).FirstOrDefault(); if (r == null) { db.CmsRelations.Add(new Identity.Enities.CmsRelation { ContentId = cid, CategoryId = cateId }); } } db.SaveChanges(); } } catch (Exception ex) { Console.WriteLine(ex.Message); } }); } }
public IActionResult Delete([FromBody] User data) { using (var db = new MoneyNoteDbContext()) { data = db.Users.FirstOrDefault(i => i.Id == data.Id && i.IsDeleted == 0); if (data != null) { data.IsDeleted = 1; db.SaveChanges(); } } return(Json(new JsonResponse <User> { data = data })); }
public JsonResponse <CmsContent> GetContent(ContentRequest request) { using (var db = new MoneyNoteDbContext()) { var exited = db.CmsContents.FirstOrDefault(i => i.Id == request.id); if (exited != null) { exited.CountView = exited.CountView + 1; db.SaveChanges(); } return(new JsonResponse <CmsContent> { data = exited }); } }
static void Loop() { while (!_isStop) { try { using (var db = new MoneyNoteDbContext()) { var idsContent = db.CmsContents.Select(i => i.Id).ToList(); var noRelation = db.CmsRelations.Where(i => idsContent.Contains(i.ContentId) == false).ToList(); db.CmsRelations.RemoveRange(noRelation); db.SaveChanges(); } using (var db = new MoneyNoteDbContext()) { var idsCat = db.CmsCategories.Select(i => i.Id).ToList(); var noRelation = db.CmsRelations.Where(i => idsCat.Contains(i.CategoryId) == false).ToList(); db.CmsRelations.RemoveRange(noRelation); db.SaveChanges(); } List <CmsCategory> cats; using (var db = new MoneyNoteDbContext()) { cats = db.CmsCategories.ToList(); foreach (var c in cats) { c.ItemsCount = db.CmsRelations.Count(i => i.CategoryId == c.Id); } } using (var db = new MoneyNoteDbContext()) { db.SaveChangeWith_ModifiedFields(cats, i => i.ItemsCount); } } catch (Exception ex) { } finally { Thread.Sleep(60 * 1000); } } }
public IActionResult Delete([FromBody] CmsCategory data) { using (var db = new MoneyNoteDbContext()) { data = db.CmsCategories.FirstOrDefault(i => i.Id == data.Id); if (data != null) { db.RemoveRange(db.CmsRelations.Where(i => i.CategoryId == data.Id)); db.CmsCategories.Remove(data); db.SaveChanges(); } } return(Json(new JsonResponse <CmsCategory> { data = data })); }
public IActionResult Delete([FromBody] CmsContent data) { using (var db = new MoneyNoteDbContext()) { data = db.CmsContents.FirstOrDefault(i => i.Id == data.Id); if (data != null) { db.CmsContents.Remove(data); var listRelation = db.CmsRelations.Where(i => i.ContentId == data.Id).ToList(); db.CmsRelations.RemoveRange(listRelation); db.SaveChanges(); } } return(Json(new JsonResponse <CmsContent> { data = data })); }
public IActionResult UpdateRelation([FromBody] ContentRelationModel data) { using (var db = new MoneyNoteDbContext()) { var existed = db.CmsRelations.Where(i => i.ContentId == data.ContentId).ToList(); db.RemoveRange(existed); db.SaveChanges(); db.AddRange(data.CategoryIds.Select(c => new CmsRelation { ContentId = data.ContentId, CategoryId = c }).ToList()); db.SaveChanges(); } return(Json(new JsonResponse <ContentRelationModel> { data = data })); }
public IActionResult YoutubeCrawl([FromBody] YoutubeCrawlRequest request) { try { var cmsContent = _youtubeCrawler.CrawlVideo(request.url, out Exception e); if (request.autoSave) { using (var db = new MoneyNoteDbContext()) { db.CmsContents.Add(cmsContent); db.SaveChanges(); } } if (e == null) { return(base.Json(new JsonResponse <CmsContent> { data = cmsContent })); } else { return(Json(new JsonResponse <CmsContent> { code = 1, message = e.Message })); } } catch (Exception ex) { return(Json(new JsonResponse <CmsContent> { code = 1, message = ex.Message })); } }
public ContentJsGridResult ListContent(JsGridFilter filter, bool onlyPublished = false) { filter = filter ?? new JsGridFilter(); filter.categoryIds = filter.categoryIds ?? new List <Guid>(); filter.categoryIds.Where(i => i != null && i != Guid.Empty).ToList(); long itemsCount = 0; List <CmsContent> data = new List <CmsContent>(); //List<CmsCategory> listCategory = new List<CmsCategory>(); List <CmsRelation.Dto> listRelation = new List <CmsRelation.Dto>(); if (string.IsNullOrEmpty(filter.SortType) == false && filter.SortType.IndexOf("random") >= 0) { filter.SortType = _rnd.Next(1, 1000000) % 2 == 0 ? "oldest" : "newest"; } using (var db = new MoneyNoteDbContext()) { var query = db.CmsContents.AsQueryable(); if (onlyPublished) { query = query.Where(i => i.IsPublished == 1); } if (string.IsNullOrEmpty(filter.Type) == false && filter.Type.IndexOf("image") >= 0) { query = query.Where(i => i.UrlRef == string.Empty || i.UrlRef == null); } if (string.IsNullOrEmpty(filter.Type) == false && filter.Type.IndexOf("video") >= 0) { query = query.Where(i => i.UrlRef != string.Empty && i.UrlRef != null); } if (!string.IsNullOrEmpty(filter.title)) { query = query.Where(i => i.Title.Contains(filter.title)); } if (!string.IsNullOrEmpty(filter.description)) { query = query.Where(i => i.Description.Contains(filter.description)); } if (!string.IsNullOrEmpty(filter.urlRef)) { query = query.Where(i => i.UrlRef.Contains(filter.urlRef)); } if (filter.findRootItem != null && filter.findRootItem == true) { //query = query.Where(i => i.ParentId == null || i.ParentId == Guid.Empty); var idsContentRelations = db.CmsRelations.Select(i => i.ContentId).Distinct().ToList(); query = query.Where(i => idsContentRelations.Contains(i.Id) == false); } else { if (filter.categoryIds != null && filter.categoryIds.Count > 0) { query = query.Join(db.CmsRelations, c => c.Id, r => r.ContentId, (c, r) => new { c, r }) .Where(m => filter.categoryIds.Contains(m.r.CategoryId)) .Select(m => m.c); } } if (filter.contentId != null && filter.contentId.Value != Guid.Empty) { var id = filter.contentId.Value; query = query.Where(i => i.Id == id); } query = query.Distinct().OrderByDescending(i => i.CreatedAt); itemsCount = query.LongCount(); if (filter.pageSize > 0) { int skip = (filter.pageIndex - 1) * filter.pageSize; skip = skip < 0 ? 0 : skip; query = query.Skip(skip).Take(filter.pageSize); } if (string.IsNullOrEmpty(filter.SortType) == false && filter.SortType.IndexOf("oldest") >= 0) { query = query.OrderBy(i => i.CreatedAt); } else { query = query.OrderByDescending(i => i.CreatedAt); } data = query.ToList(); //listCategory = db.CmsCategories.Where(i => i.IsDeleted == 0).ToList(); var contentIds = data.Select(i => i.Id).ToList(); if (contentIds.Count > 0) { listRelation = db.CmsRelations.Where(i => contentIds.Contains(i.ContentId)) .Select(i => new CmsRelation.Dto { CategoryId = i.CategoryId, ContentId = i.ContentId }) .Distinct().ToList(); } //cbeadc96-a21a-4ab8-a69b-8a56c893ffce } data = data.Select((i) => { return((i.ThumbnailWidth == 0 || i.ThumbnailHeight == 0) ? i.CalculateThumbnail() : i); }).ToList(); return(new ContentJsGridResult { data = data, itemsCount = itemsCount, listRelation = listRelation, //listCategory = listCategory }); }
public IActionResult CreateOrUpdate([FromBody] User data) { if (string.IsNullOrEmpty(data.Username)) { return(Json(new JsonResponse <string> { code = 1, message = "Usenam can not be empty" })); } if (data.Id == null || data.Id == Guid.Empty) { data.Id = Guid.NewGuid(); } var passwordHashed = string.Empty; if (!string.IsNullOrEmpty(data.Password)) { passwordHashed = Auth.HashPassword(data.Password); } using (var db = new MoneyNoteDbContext()) { var exited = db.Users.FirstOrDefault(i => i.Username == data.Username && i.IsDeleted == 0); if (exited == null) { db.Users.Add(data); } else { if (!string.IsNullOrEmpty(passwordHashed)) { exited.Password = passwordHashed; } } db.SaveChanges(); } using (var db = new MoneyNoteDbContext()) { var existed = db.UserAcls.Where(i => i.UserId == data.Id).ToList(); db.UserAcls.RemoveRange(existed); db.SaveChanges(); } if (data.Acls != null && data.Acls.Count > 0) { List <UserAcl> acls = data.Acls.Distinct().Select(i => new UserAcl { Id = Guid.NewGuid(), ModuleCode = i.ModuleCode, PermissionCode = i.PermissionCode, UserId = data.Id }).ToList(); using (var db = new MoneyNoteDbContext()) { db.UserAcls.AddRange(acls); db.SaveChanges(); } } data.Password = string.Empty; return(Json(new JsonResponse <User> { data = data })); }
public static bool Login(string username, string password, HttpContext context, out string token) { token = string.Empty; User user; if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password)) { return(false); } var encryptPwd = HashPassword(password); using (var db = new MoneyNoteDbContext()) { user = db.Users.FirstOrDefault(i => i.Username.Equals(username) && i.Password.Equals(encryptPwd)); } if (user == null) { return(false); } token = GenerateToken(username); user.LastLogedin = DateTime.Now; user.LastToken = token; if (context != null) { context.Session.Set("__CurrentUserToken", UTF8Encoding.UTF8.GetBytes(token)); } MemoryMessageBus.Instance.CacheSet(token, user, DateTime.Now.AddDays(1)); if (user.Username == "supperadmin") { MemoryMessageBus.Instance.CacheSet($"{token}_module", new List <string> { "SupperAdmin" }); MemoryMessageBus.Instance.CacheSet($"{token}_permission", new List <string> { "SupperAdmin" }); } else { if (_lookupUserAcls.TryGetValue(user.Id, out List <UserAcl> userAcls) && userAcls != null && userAcls.Count > 0) { MemoryMessageBus.Instance.CacheSet($"{token}_module", userAcls.Select(i => i.ModuleCode).Distinct().ToList()); MemoryMessageBus.Instance.CacheSet($"{token}_permission", userAcls.Select(i => i.PermissionCode).Distinct().ToList()); } } Task.Run(() => { using (var db = new MoneyNoteDbContext()) { var tempU = db.Users.FirstOrDefault(i => i.Id == user.Id); tempU.LastToken = user.LastToken; tempU.LastLogedin = user.LastLogedin; db.SaveChanges(); } }); return(true); }
public JsonResponse <ContentJsGridResult> GetContentRelated(ContentRelatedRequest request) { request.Type = (request.Type ?? string.Empty).ToLower(); request.SortType = (request.SortType ?? string.Empty).ToLower(); if (string.IsNullOrEmpty(request.SortType) == false && request.SortType.IndexOf("random") >= 0) { request.SortType = _rnd.Next(1, 1000000) % 2 == 0 ? "oldest" : "newest"; } using (var db = new MoneyNoteDbContext()) { var query = db.CmsContents.Where(i => i.IsPublished == 1).Join(db.CmsRelations, c => c.Id, r => r.ContentId, (c, r) => new { c, r }); if (string.IsNullOrEmpty(request.Type) == false && request.Type.IndexOf("image") >= 0) { query = query.Where(i => i.c.UrlRef == string.Empty || i.c.UrlRef == null); } if (string.IsNullOrEmpty(request.Type) == false && request.Type.IndexOf("video") >= 0) { query = query.Where(i => i.c.UrlRef != string.Empty && i.c.UrlRef != null); } var queryCat = query.AsQueryable(); if (request.ContentId != null && request.ContentId != Guid.Empty) { queryCat = queryCat.Where(i => i.r.ContentId == request.ContentId); } var categories = queryCat.Select(i => i.r.CategoryId).Distinct().ToList(); var relation = queryCat.Select(i => new CmsRelation.Dto { CategoryId = i.r.CategoryId, ContentId = i.r.ContentId }) .Distinct().ToList(); var queryContent = query.Where(i => i.c.Id != request.ContentId) .Where(i => categories.Contains(i.r.CategoryId)).Select(i => i.c).Distinct(); if (string.IsNullOrEmpty(request.Type) == false && request.SortType.IndexOf("oldest") >= 0) { queryContent = queryContent.OrderBy(i => i.CreatedAt); } else { queryContent = queryContent.OrderByDescending(i => i.CreatedAt); } var total = queryContent.Count(); if (request.pageIndex != null && request.pageSize > 0) { int skip = (request.pageIndex.Value - 1) * request.pageSize.Value; skip = skip < 0 ? 0 : skip; int take = request.pageSize.Value; queryContent = queryContent.Skip(skip).Take(take); } var data = queryContent.ToList(); return(new JsonResponse <ContentJsGridResult> { data = new ContentJsGridResult { data = data, itemsCount = total, listRelation = relation }, }); } }