123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- using System;
- using System.Collections.Generic;
- using System.IdentityModel.Tokens.Jwt;
- using System.Linq;
- using System.Security.Claims;
- using System.Text;
- using FMSAdmin.Data;
- using FMSAdmin.Helpers;
- using FMSAdmin.Entities;
- using Microsoft.EntityFrameworkCore;
- using Microsoft.Extensions.Logging;
- using Microsoft.Extensions.Options;
- using Microsoft.IdentityModel.Tokens;
- using FMSAdmin.Models;
- namespace FMSApp.Services {
- public class MobileShortcutService {
- private readonly ILogger<MobileShortcutService> _logger;
- private readonly FMSContext _context;
- private readonly AppSettings _appSettings;
- public MobileShortcutService(
- ILogger<MobileShortcutService> logger,
- FMSContext context,
- IOptions<AppSettings> appSettings) {
- _logger = logger;
- _context = context;
- _appSettings = appSettings.Value;
- }
- public void CopyFromDefault(string userId, ShortcutType type) {
- var userShortcutCount = _context.MobileShortcut.Where(
- x => x.UserId == userId
- && x.Type == type
- ).Count();
- if (userShortcutCount == 0) {
- var defaultShortcuts = _context.MobileShortcut.Where(
- x => (x.UserId == null || x.UserId == "")
- && x.Type == type
- ).OrderBy(x => x.Position).ToList();
- int position = 0;
- foreach (var def in defaultShortcuts) {
- position++;
- var shortcut = new MobileShortcut();
- shortcut.UserId = userId;
- shortcut.SitemapId = def.SitemapId;
- shortcut.Type = def.Type;
- shortcut.Icon = def.Icon;
- shortcut.MobileShortcutId = 0;
- shortcut.Position = position;
- shortcut.Created = DateTime.Now;
- shortcut.Updated = DateTime.Now;
- _context.MobileShortcut.Add(shortcut);
- }
- _context.SaveChanges();
- }
- }
- public void RePosition(string userId, ShortcutType type) {
- var list = _context.MobileShortcut.Where(
- x => x.UserId == userId
- && x.Type == type
- && x.IsDelete == false
- );
- int position = 0;
- foreach (var item in list) {
- position++;
- item.Position = position;
- _context.MobileShortcut.Update(item);
- }
- _context.SaveChanges();
- }
- public void PositionUp(string userId, int sitemapId, ShortcutType type) {
- CopyFromDefault(userId, type);
- var me = _context.MobileShortcut.FirstOrDefault(
- x => x.UserId == userId
- && x.SitemapId == sitemapId
- && x.Type == type
- && x.IsDelete == false
- );
- if (me == null) return;
- var prev = _context.MobileShortcut.Where(
- x => x.UserId == userId
- && x.Type == type
- && x.Position < me.Position
- && x.IsDelete == false
- ).OrderByDescending(x => x.Position).FirstOrDefault();
- if (prev == null) return;
- var myPosition = me.Position;
- me.Position = prev.Position;
- prev.Position = myPosition;
- _context.MobileShortcut.Update(me);
- _context.MobileShortcut.Update(prev);
- _context.SaveChanges();
- }
- public void PositionDown(string userId, int sitemapId, ShortcutType type) {
- CopyFromDefault(userId, type);
- var me = _context.MobileShortcut.FirstOrDefault(
- x => x.UserId == userId
- && x.SitemapId == sitemapId
- && x.Type == type
- && x.IsDelete == false
- );
- if (me == null) return;
- var next = _context.MobileShortcut.Where(
- x => x.UserId == userId
- && x.Type == type
- && x.Position > me.Position
- && x.IsDelete == false
- ).OrderBy(x => x.Position).FirstOrDefault();
- if (next == null) return;
- var myPosition = me.Position;
- me.Position = next.Position;
- next.Position = myPosition;
- _context.MobileShortcut.Update(me);
- _context.MobileShortcut.Update(next);
- _context.SaveChanges();
- }
- public void Save(MobileShortcut data) {
- CopyFromDefault(data.UserId, data.Type);
- var persist = _context.MobileShortcut.Where(
- x => x.UserId == data.UserId
- && x.SitemapId == data.SitemapId
- && x.Type == data.Type
- && x.IsDelete == false
- ).FirstOrDefault();
- // 등록시 중복체크
- if (data.MobileShortcutId == 0 && persist != null) {
- throw new ServiceException("이미 등록되어있는 메뉴입니다.");
- }
- if (data.MobileShortcutId != 0 && persist == null) {
- // 기존 데이터 수정
- persist = _context.MobileShortcut.FirstOrDefault(
- x => x.MobileShortcutId == data.MobileShortcutId
- );
- if (persist != null) {
- persist.SitemapId = data.SitemapId;
- persist.Icon = data.Icon;
- persist.Updated = DateTime.Now;
- }
- } else if (persist == null) {
- var maxPosition = _context.MobileShortcut.Where(
- x => x.UserId == data.UserId
- && x.Type == data.Type
- && x.IsDelete == false
- ).Max(x => x.Position);
- data.Created = DateTime.Now;
- data.Updated = DateTime.Now;
- data.Position = maxPosition + 1;
- _context.MobileShortcut.Add(data);
- _context.SaveChanges();
- } else {
- persist.SitemapId = data.SitemapId;
- persist.Icon = data.Icon;
- persist.Updated = DateTime.Now;
- _context.MobileShortcut.Update(persist);
- _context.SaveChanges();
- }
- RePosition(data.UserId, data.Type);
- }
- public IQueryable<MobileShortcut> GetAll() {
- var query = _context.MobileShortcut;
- return query;
- }
- public void Delete(string userId, int sitemapId, ShortcutType type) {
- CopyFromDefault(userId, type);
- var item = _context.MobileShortcut.FirstOrDefault(
- x => x.UserId == userId
- && x.SitemapId == sitemapId
- && x.Type == type
- && x.IsDelete == false
- );
- if (item != null) {
- _context.MobileShortcut.Remove(item);
- _context.SaveChanges();
- }
- RePosition(userId, type);
- }
- }
- }
|