using System;
|
using System.Text;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.Runtime.Serialization;
|
using System.Linq;
|
using System.IO;
|
|
namespace IStation.DAL.LocalFile
|
{
|
/// <summary>
|
/// 项目
|
/// </summary>
|
public class Project : IDAL.IProject<Entity.Project>
|
{
|
#region Path
|
|
/// <summary>
|
/// 查询文件路径
|
/// </summary>
|
private string GetFolderPath()
|
{
|
return FileHelper.GetWorkPath();
|
}
|
|
/// <summary>
|
/// 查询文件路径
|
/// </summary>
|
private string GetProjectPath(long id)
|
{
|
return FileHelper.GetProjectPath(id);
|
}
|
|
#endregion
|
|
#region Get
|
|
/// <summary>
|
/// 查询全部
|
/// </summary>
|
public List<Entity.Project> GetAll()
|
{
|
var path = GetFolderPath();
|
var all = FileIdHelper<Entity.Project>.GetAll(path);
|
var entities = all?.ToList();
|
return entities;
|
}
|
|
/// <summary>
|
/// 根据 Id查询
|
/// </summary>
|
public Entity.Project GetById(long Id)
|
{
|
var all = GetAll();
|
var entities = all?.ToList();
|
return entities?.Find(t => t.Id == Id);
|
}
|
|
/// <summary>
|
/// 根据 Id集合查询
|
/// </summary>
|
public List<Entity.Project> GetByIds(IEnumerable<long> Ids)
|
{
|
if (Ids == null || Ids.Count() < 1)
|
return default;
|
var all = GetAll();
|
var entities = all?.Where(x => Ids.Contains(x.Id)).ToList();
|
return entities;
|
}
|
|
#endregion
|
|
#region Insert
|
|
/// <summary>
|
/// 插入
|
/// </summary>
|
public long Insert(Entity.Project rhs)
|
{
|
if (rhs == null)
|
return default;
|
var path = GetFolderPath();
|
return FileIdHelper<Entity.Project>.Insert(path, rhs);
|
}
|
|
/// <summary>
|
/// 批量插入
|
/// </summary>
|
public bool Inserts(IEnumerable<Entity.Project> list)
|
{
|
if (list == null || list.Count() < 1)
|
return default;
|
var path = GetFolderPath();
|
return FileIdHelper<Entity.Project>.Inserts(path, list);
|
}
|
|
/// <summary>
|
/// 插入并返回
|
/// </summary>
|
public Entity.Project InsertR(Entity.Project rhs)
|
{
|
if (rhs == null)
|
return default;
|
var path = GetFolderPath();
|
var entities = FileIdHelper<Entity.Project>.InsertR(path, rhs);
|
return entities;
|
}
|
|
/// <summary>
|
/// 批量插入并返回
|
/// </summary>
|
public List<long> InsertsR(IEnumerable<Entity.Project> list)
|
{
|
if (list == null || list.Count() < 1)
|
return default;
|
var path = GetFolderPath();
|
var entities = FileIdHelper<Entity.Project>.InsertRs(path, list);
|
return entities?.Select(x => x.Id).ToList();
|
}
|
|
#endregion
|
|
#region Update
|
|
/// <summary>
|
/// 更新
|
/// </summary>
|
public bool Update(Entity.Project rhs)
|
{
|
if (rhs == null)
|
return default;
|
var path = GetFolderPath();
|
return FileIdHelper<Entity.Project>.Update(path, rhs);
|
}
|
|
/// <summary>
|
/// 批量更新
|
/// </summary>
|
public bool Updates(IEnumerable<Entity.Project> list)
|
{
|
if (list == null || list.Count() < 1)
|
return default;
|
var path = GetFolderPath();
|
return FileIdHelper<Entity.Project>.Updates(path, list);
|
}
|
|
#endregion
|
|
#region Delete
|
|
/// <summary>
|
/// 根据 Id删除
|
/// </summary>
|
public bool DeleteById(long Id)
|
{
|
if (Id < 0)
|
return default;
|
var path = GetFolderPath();
|
var bol = FileIdHelper<Entity.Project>.DeleteById(path, Id);
|
return bol;
|
}
|
|
/// <summary>
|
/// 根据 Id集合删除
|
/// </summary>
|
public bool DeleteByIds(IEnumerable<long> Ids)
|
{
|
if (Ids == null || Ids.Count() < 1)
|
return default;
|
var path = GetFolderPath();
|
var bol = FileIdHelper<Entity.Project>.DeleteByIds(path, Ids);
|
return bol;
|
}
|
|
/// <summary>
|
/// 删除
|
/// </summary>
|
public bool Delete(Entity.Project rhs)
|
{
|
if (rhs == null)
|
return default;
|
var path = GetFolderPath();
|
var bol = FileIdHelper<Entity.Project>.DeleteById(path, rhs.Id);
|
return bol;
|
}
|
|
/// <summary>
|
/// 批量删除
|
/// </summary>
|
public bool Deletes(IEnumerable<Entity.Project> list)
|
{
|
if (list == null || list.Count() < 1)
|
return default;
|
var path = GetFolderPath();
|
var Ids = list.Select(x => x.Id).ToList();
|
var bol = FileIdHelper<Entity.Project>.DeleteByIds(path, Ids);
|
return bol;
|
}
|
|
/// <summary>
|
/// 删除全部
|
/// </summary>
|
public bool DeleteAll()
|
{
|
var path = GetFolderPath();
|
var bol = FileIdHelper<Entity.Project>.DeleteAll(path);
|
return bol;
|
}
|
#endregion
|
|
#region Import
|
|
/// <summary>
|
/// 导入
|
/// </summary>
|
public long Import(string fileName, out string msg)
|
{
|
msg = string.Empty;
|
var newProjectId = SnowflakeIdHelper.NextId();
|
var newProjectFolderPath = GetProjectPath(newProjectId);
|
ZipHelper.UnZipFolder(fileName, newProjectFolderPath);
|
|
var defaultProject = FileIdHelper<Entity.Project>.GetLatest(newProjectFolderPath);
|
if (defaultProject == null)
|
{
|
msg = "项目文件缺失";
|
return default;
|
}
|
else
|
{
|
FileIdHelper<Entity.Project>.DeleteAll(newProjectFolderPath);
|
}
|
|
var fileInfo = new FileInfo(fileName);
|
var entity = new Entity.Project();
|
entity.Id = newProjectId;
|
entity.Name = defaultProject.Name;
|
entity.Version = defaultProject.Version;
|
entity.TagName = defaultProject.TagName;
|
entity.Description = defaultProject.Description;
|
entity.CreateTime = fileInfo.CreationTime;
|
entity.UpdateTime = fileInfo.LastWriteTime;
|
|
var folderPath = GetFolderPath();
|
FileSrcHelper<Entity.Project>.Append(folderPath, entity);
|
return newProjectId;
|
}
|
|
#endregion
|
|
#region Export
|
|
/// <summary>
|
/// 导出
|
/// </summary>
|
public bool Export(long id, string fileName, out string msg)
|
{
|
msg = string.Empty;
|
var project = GetById(id);
|
var projectPath = GetProjectPath(id);
|
var result = FileSrcHelper<Entity.Project>.Append(projectPath, project);
|
if (!result)
|
{
|
msg = "项目文件未生成";
|
return default;
|
}
|
|
ZipHelper.ZipFolder(projectPath, fileName);
|
return true;
|
}
|
|
#endregion
|
|
}
|
|
}
|