ExplorerMapper.cs
Home
/
FileServer /
BLL /
Services /
Mapper /
ExplorerMapper.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;
using Model.Entities.Users;
using Model.Entities.Files;
using Model.Entities.Files.FS_Entities;
using Model.UnitsOfWork;
using BLL.Services.System;
using Model.ViewModel.Files;
namespace BLL.Services.Mapper
{
public class ExplorerMapper : Base.BaseServices
{
readonly PermissionServices PermissionServices;
readonly Func<User> CurrentUser;
public ExplorerMapper(UOW UOW,
PermissionServices permissionServices,
Func<User> user) : base(UOW)
{
this.PermissionServices = permissionServices;
this.CurrentUser = user;
}
protected List<SDirectory> GetDirecoryData(int ID)
{
if (ID == -1)
{
//#Data #Permission
//Выбрать корренные папки, к которым имеет доступ текущий пользователь
return UOW.Repo_SRootDirectory.All_NoTrack_List.
Where(e => PermissionServices.CanOpen(CurrentUser(), e))
.Cast<SDirectory>()
.ToList();
}
else
{
//#Data
return UOW.Repo_SDirectory.All_NoTrack.
Where(e => e.ID == ID)
.Include(e => e.Root)
.Include("_Items")
.ToList();
//First();
}
}
public List<ExplorerItem> GetDirectoryItems(int ID)
{
if (ID == -1)
{
return GetDirecoryData(ID).
Select(e => new ExplorerItem()
{
ID = e.ID,
Name = e.Name,
FileExtension = "",
Type = e.Type.ToString(),
Size = -1
}).ToList();
}
else
{
return GetDirecoryData(ID).First().Items.Where(e => e.Type != Enum_BaseDirectoryEntity.UploadFile).
Select(e => new ExplorerItem()
{
ID = e.ID,
Name = e.Name,
FileExtension = e.FileExtension,
Type = e.Type.ToString(),
Size = (e is SFile) ? e.GetSize(Enum_FileSize.MByte) : -1
}).ToList();
}
}
//Формирование пути навигации
public List<PathItem> GetPath(int ID)
{
if (ID == -1)
return PathItem.GetDefault();
else
{
return PathItem.GetDefault().Concat(
GetDirecoryData(ID).First().LogicPath2.
Select(e => new PathItem()
{
ID = e.ID,
Name = e.Name
})).ToList();
}
}
}
}