ZhiYeJianKang_PeiXun/Song.ServiceImpls/AddressListCom.cs
2025-02-20 15:41:53 +08:00

369 lines
14 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;
using WeiSha.Common;
using Song.Entities;
using WeiSha.Data;
using Song.ServiceInterfaces;
using System.Data.Common;
namespace Song.ServiceImpls
{
public class AddressListCom : IAddressList
{
/// <summary>
/// 清除所有信息
/// </summary>
public void Clear()
{
Gateway.Default.Delete<AddressList>(AddressList._.Adl_Id > 0);
Gateway.Default.Delete<AddressSort>(AddressSort._.Ads_Id > 0);
}
/// <summary>
/// 添加
/// </summary>
/// <param name="entity">业务实体</param>
public void AddressAdd(AddressList entity)
{
//当前通讯录信息归属于某个用户记录其id
entity.Acc_Id = Extend.LoginState.Admin.CurrentUser.Acc_Id;
Song.Entities.Organization org = Business.Do<IOrganization>().OrganCurrent();
if (org != null)
{
entity.Org_ID = org.Org_ID;
entity.Org_Name = org.Org_Name;
}
Gateway.Default.Save<AddressList>(entity);
}
/// <summary>
/// 修改
/// </summary>
/// <param name="entity">业务实体</param>
public void AddressSave(AddressList entity)
{
Gateway.Default.Save<AddressList>(entity);
}
/// <summary>
/// 删除
/// </summary>
/// <param name="entity">业务实体</param>
public void AddressDelete(AddressList entity)
{
Gateway.Default.Delete<AddressList>(AddressList._.Adl_Id == entity.Adl_Id);
}
/// <summary>
/// 删除按主键ID
/// </summary>
/// <param name="identify">实体的主键</param>
public void AddressDelete(int identify)
{
Gateway.Default.Delete<AddressList>(AddressList._.Adl_Id == identify);
}
/// <summary>
/// 删除所有
/// </summary>
public void AddressDeleteAll()
{
Gateway.Default.Delete<AddressList>(AddressList._.Adl_Id > 0);
}
/// <summary>
/// 删除,按人员名称
/// </summary>
/// <param name="name">人员名称</param>
public void AddressDelete(string name)
{
Gateway.Default.Delete<AddressList>(AddressList._.Adl_Name == name);
}
/// <summary>
/// 获取单一实体对象按主键ID
/// </summary>
/// <param name="identify">实体的主键</param>
/// <returns></returns>
public AddressList AddressSingle(int identify)
{
return Gateway.Default.From<AddressList>().Where(AddressList._.Adl_Id == identify).ToFirst<AddressList>();
}
public AddressList AddressSingle(string mobiTel)
{
return Gateway.Default.From<AddressList>().Where(AddressList._.Adl_MobileTel == mobiTel.Trim()).ToFirst<AddressList>();
}
/// <summary>
/// 获取某个院系的所有人员;
/// </summary>
/// <param name="isShow">是否显示</param>
/// <returns></returns>
public List<AddressList> AddressAll()
{
return Gateway.Default.From<AddressList>().ToList<AddressList>();
}
public List<AddressList> AddressAll(int? sortId)
{
WhereClip wc = new WhereClip();
if (sortId != null && sortId > 0) wc.And(AddressList._.Ads_Id == (int)sortId);
return Gateway.Default.From<AddressList>().Where(wc).ToList<AddressList>();
}
/// <summary>
/// 分页获取所有的人员;
/// </summary>
/// <param name="size">每页显示几条记录</param>
/// <param name="index">当前第几页</param>
/// <param name="countSum">记录总数</param>
/// <returns></returns>
public List<AddressList> AddressPager(int accId, int size, int index, out int countSum)
{
WhereClip wc = AddressList._.Acc_Id == accId;
countSum = Gateway.Default.Count<AddressList>(wc);
return Gateway.Default.From<AddressList>().Where(wc).OrderBy(AddressList._.Adl_Id.Desc).ToList<AddressList>(size, (index - 1) * size);
}
/// <summary>
/// 分页获取所有的人员;
/// </summary>
/// <param name="sortId">分类id</param>
/// <param name="size"></param>
/// <param name="index"></param>
/// <param name="countSum"></param>
/// <returns></returns>
public List<AddressList> AddressPager(int accId, string typeName, string personName, int size, int index, out int countSum)
{
WhereClip wc = AddressList._.Acc_Id == accId;
if (typeName.Trim()!="")
{
wc.And(AddressList._.Ads_Name == typeName);
}
if (personName.Trim() != "" && personName != null)
{
wc.And(AddressList._.Adl_Name.Like("%" + personName + "%"));
}
countSum = Gateway.Default.Count<AddressList>(wc);
return Gateway.Default.From<AddressList>().Where(wc).OrderBy(AddressList._.Adl_Name.Asc).ToList<AddressList>(size, (index - 1) * size);
}
#region
/// <summary>
/// 添加
/// </summary>
/// <param name="entity">业务实体</param>
public int SortAdd(AddressSort entity)
{
//添加对象,并设置排序号
object obj = Gateway.Default.Max<AddressSort>( AddressSort._.Ads_Tax,AddressSort._.Ads_Id > -1);
int tax = 0;
if (obj is int) tax = (int)obj;
entity.Ads_Tax = tax + 1;
return Gateway.Default.Save<AddressSort>(entity);
}
/// <summary>
/// 修改
/// </summary>
/// <param name="entity">业务实体</param>
public void SortSave(AddressSort entity)
{
using (DbTrans trans = Gateway.Default.BeginTrans())
{
try
{
trans.Save<AddressSort>(entity);
trans.Update<AddressList>(new Field[] { AddressList._.Ads_Name }, new object[] { entity.Ads_Name }, AddressList._.Ads_Id == entity.Ads_Id);
trans.Commit();
}
catch
{
trans.Rollback();
throw;
}
finally
{
trans.Close();
}
}
}
/// <summary>
/// 删除
/// </summary>
/// <param name="entity">业务实体</param>
public void SortDelete(AddressSort entity)
{
this.SortDelete(entity.Ads_Id);
}
/// <summary>
/// 删除按主键ID
/// </summary>
/// <param name="identify">实体的主键</param>
public void SortDelete(int identify)
{
using (DbTrans tran = Gateway.Default.BeginTrans())
{
try
{
object obj = Gateway.Default.Count<AddressList>(AddressList._.Ads_Id == identify);
if ((int)obj > 0) throw new Exception("当前分类含有下属信息,请勿删除");
//
tran.Delete<AddressSort>(AddressSort._.Ads_Id);
tran.Delete<AddressList>(AddressList._.Ads_Id);
tran.Commit();
}
catch
{
tran.Rollback();
throw;
}
finally
{
tran.Close();
}
}
}
/// <summary>
/// 清除所有分类,包括通讯录信息
/// </summary>
public void SortDeleteAll()
{
Gateway.Default.Delete<AddressList>(AddressList._.Adl_Id > 0);
Gateway.Default.Delete<AddressSort>(AddressSort._.Ads_Id > 0);
}
/// <summary>
/// 获取单一实体对象按主键ID
/// </summary>
/// <param name="identify">实体的主键</param>
/// <returns></returns>
public AddressSort SortSingle(int identify)
{
return Gateway.Default.From<AddressSort>().Where(AddressSort._.Ads_Id == identify).ToFirst<AddressSort>();
}
/// <summary>
/// 获取某个院系的所有人员;
/// </summary>
/// <param name="isUse">是否使用</param>
/// <returns></returns>
public List<AddressSort> SortAll(bool? isUse)
{
WhereClip wc = new WhereClip();
if (isUse != null) wc.And(AddressSort._.Ads_IsUse == (bool)isUse);
return Gateway.Default.From<AddressSort>().Where(wc).ToList<AddressSort>();
}
/// <summary>
/// 分页获取;
/// </summary>
/// <param name="accId">所属人员的id</param>
/// <param name="size">每页显示几条记录</param>
/// <param name="index">当前第几页</param>
/// <param name="countSum">记录总数</param>
/// <returns></returns>
public List<AddressSort> SortPager(int accId, int size, int index, out int countSum)
{
WhereClip wc = AddressSort._.Acc_Id == accId;
countSum = Gateway.Default.Count<AddressSort>(wc);
return Gateway.Default.From<AddressSort>().Where(wc).OrderBy(AddressSort._.Ads_Tax.Desc).ToList<AddressSort>(size, (index - 1) * size);
}
/// <summary>
/// 分页获取所有的人员;
/// </summary>
/// <param name="accId">所属人员的id</param>
/// <param name="sortName">分类名称</param>
/// <param name="size"></param>
/// <param name="index"></param>
/// <param name="countSum"></param>
/// <returns></returns>
public List<AddressSort> SortPager(int accId, string sortName, int size, int index, out int countSum)
{
WhereClip wc = AddressSort._.Acc_Id == accId;
if (sortName != string.Empty) wc.And(AddressSort._.Ads_Name.Like("%" + sortName + "%"));
countSum = Gateway.Default.Count<AddressSort>(wc);
return Gateway.Default.From<AddressSort>().Where(wc).OrderBy(AddressSort._.Ads_Tax.Desc).ToList<AddressSort>(size, (index - 1) * size);
}
/// <suPsary>
/// 将当前栏目向上移动;仅在当前对象的同层移动,即同一父节点下的对象之间移动;
/// </suPsary>
/// <param name="id"></param>
/// <returns>如果已经处于顶端则返回false移动成功返回true</returns>
public bool SortRemoveUp(int id)
{
//当前对象
AddressSort current = Gateway.Default.From<AddressSort>().Where(AddressSort._.Ads_Id == id).ToFirst<AddressSort>();
//当前对象排序号
int orderValue = (int)current.Ads_Tax;
//上一个对象,即兄长对象;
AddressSort up = Gateway.Default.From<AddressSort>().Where(AddressSort._.Ads_Tax > orderValue).OrderBy(AddressSort._.Ads_Tax.Asc).ToFirst<AddressSort>();
if (up == null)
{
//如果兄长对象不存在,则表示当前节点在兄弟中是老大;即是最顶点;
return false;
}
//交换排序号
current.Ads_Tax = up.Ads_Tax;
up.Ads_Tax = orderValue;
using (DbTrans trans = Gateway.Default.BeginTrans())
{
try
{
trans.Save<AddressSort>(current);
trans.Save<AddressSort>(up);
trans.Commit();
return true;
}
catch
{
trans.Rollback();
throw;
}
finally
{
trans.Close();
}
}
}
/// <suPsary>
/// 将当前栏目向下移动;仅在当前对象的同层移动,即同一父节点下的对象之间移动;
/// </suPsary>
/// <param name="id"></param>
/// <returns>如果已经处于最底端则返回false移动成功返回true</returns>
public bool SortRemoveDown(int id)
{
//当前对象
AddressSort current = Gateway.Default.From<AddressSort>().Where(AddressSort._.Ads_Id == id).ToFirst<AddressSort>();
//当前对象排序号
int orderValue = (int)current.Ads_Tax;
//下一个对象,即弟弟对象;
AddressSort down = Gateway.Default.From<AddressSort>().Where(AddressSort._.Ads_Tax < orderValue).OrderBy(AddressSort._.Ads_Tax.Desc).ToFirst<AddressSort>();
if (down == null)
{
//如果弟对象不存在,则表示当前节点在兄弟中是老幺;即是最底端;
return false;
}
//交换排序号
current.Ads_Tax = down.Ads_Tax;
down.Ads_Tax = orderValue;
using (DbTrans trans = Gateway.Default.BeginTrans())
{
try
{
trans.Save<AddressSort>(current);
trans.Save<AddressSort>(down);
trans.Commit();
}
catch
{
trans.Rollback();
throw;
}
finally
{
trans.Close();
}
}
return true;
}
#endregion
}
}