using AutoMapper;
using DTO;
using IServices;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using zhengcaioa.Models;
namespace Services
{
public class SimService :ISimService
{
private readonly zhengcaioaContext _context;
private readonly IMapper _mapper;
public SimService(zhengcaioaContext context, IMapper mapper)
{
_context = context;
_mapper = mapper;
}
#region SIM 分配
///
/// 保存
///
///
///
public ResultEntity Save(SimBind md)
{
ResultEntity resultEntity = new ResultEntity();
try
{
var temp = _context.SimBind.Where(e => e.sim_id == md.sim_id).SingleOrDefault();
if(temp!=null)
{
var users = _context.SimBind.Where(c => c.user_id == md.user_id).ToList();
if(users!=null)
{
foreach(var item in users)
{
item.user_id = "";
item.up_time = DateTime.Now;
item.up_user = md.up_user;
}
}
temp.cardpro = md.cardpro;
temp.user_id = md.user_id;
temp.up_user = md.up_user;
temp.up_time = DateTime.Now;
}
else
{
md.up_time = DateTime.Now;
_context.SimBind.Add(md);
}
_context.SaveChanges();
resultEntity.Result = true;
}
catch (Exception ex)
{
resultEntity.Result = false;
resultEntity.Message = "保存失败,请联系管理员";
ex.Message.ToString();
}
return resultEntity;
}
///
/// 解绑
///
///
///
public ResultEntity UnBind(string ids,string user)
{
ResultEntity resultEntity = new ResultEntity();
try
{
var temp = _context.SimBind.Where(e =>ids.Contains(e.sim_id)).ToList();
if (temp != null)
{
foreach (var item in temp)
{
item.user_id = "";
item.up_time = DateTime.Now;
item.up_user = user;
}
}
_context.SaveChanges();
resultEntity.Result = true;
}
catch (Exception ex)
{
resultEntity.Result = false;
resultEntity.Message = "保存失败,请联系管理员";
ex.Message.ToString();
}
return resultEntity;
}
///
/// 绑定信息查询
///
///
///
public SimBindView Get(string id)
{
var entity = _context.SimBindView.Where(c=>c.Id==id).SingleOrDefault();
if (entity == null)
{
entity = new SimBindView();
}
return entity;
}
///
/// 查询内容
///
///
///
public ResultDataEntity SearchByPaging(SimBindDTOSearch searchEntity)
{
ResultDataEntity data = new ResultDataEntity();
try
{
var codedata= (from e in _context.SysCodes
join c in _context.SysCodeDtls
on e.Id equals c.CodeId
where e.RecStatus == "A"
&& c.RecStatus == "A"
&& e.CodeTable == "t_sim_bind"
&& e.CodeField == "cardpro"
select c).OrderBy(x => x.Sort).ToList();
var dt = _context.SimBindView.OrderBy(c => c.simcard).ToList();
if(!string.IsNullOrEmpty(searchEntity.simcard))
{
dt = dt.Where(c => c.simcard.Contains(searchEntity.simcard)).ToList();
}
if (!string.IsNullOrEmpty(searchEntity.username))
{
dt = dt.Where(c => !string.IsNullOrEmpty(c.username) && c.username.Contains(searchEntity.username)).ToList();
}
//if (searchEntity.totalrows == 0)
searchEntity.totalrows = dt.Count();
var signinList = dt.Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList();
signinList= signinList.Select(a=> new SimBindView()
{
cardproChs = ToChs(a.cardpro, codedata),
Id = a.Id,
simcard = a.simcard,
simstatus = a.simstatus,
up_time = a.up_time,
username = a.username
}).ToList();
data.LoadData(searchEntity, signinList);
}
catch (Exception ex)
{
throw;
}
return data;
}
private string ToChs(string key,List list)
{
string str = "";
var item = list.Find(c => c.CodeSn == key);
if(item!=null)
{
str = item.Comments;
}
return str;
}
#endregion
#region 费用录入
///
/// 获取已绑定的电话卡
///
///
public List GetBindSim()
{
List list = null;
try
{
list = _context.SimBindView.Where(c=>!string.IsNullOrEmpty(c.userid)).OrderBy(c => c.simcard).ToList();
}
catch (Exception er)
{
throw;
}
return list;
}
///
/// 保存
///
///
///
public ResultEntity SaveCost(SimCost md)
{
ResultEntity resultEntity = new ResultEntity();
try
{
var temp = _context.SimCost.Where(e => e.sim_id == md.sim_id && e.bill_year==md.bill_year && e.bill_month==md.bill_month).SingleOrDefault();
var tempBind = _context.SimBindView.Where(e => e.Id == md.sim_id).SingleOrDefault();
if (temp != null && temp.status=="0")
{
temp.bill_amount = md.bill_amount;
//temp.bill_month =md.m;
//temp.bill_year = md.accounted_time.Year;
temp.sub_userid = md.sub_userid;
temp.up_time = DateTime.Now;
if(tempBind!=null)
{
temp.allow_amount = decimal.Parse(tempBind.cardpro);
temp.user_id = tempBind.userid;
temp.amount = temp.allow_amount - temp.bill_amount > 0 ? 0 : temp.allow_amount - temp.bill_amount;
}
}
else
{
//md.bill_month = md.accounted_time.Month;
//md.bill_year = md.accounted_time.Year;
//当月重复判断
//var monthck = _context.SimCost.Where(c => c.sim_id == md.sim_id && c.bill_year == md.bill_year && c.bill_month == md.bill_month).Count();
//if(monthck>0)
//{
// resultEntity.Result = false;
// resultEntity.Message = string.Format("此电话卡在[{0}-{1}]月已存在记录,不能重复添加;",md.bill_year,md.bill_month);
// return resultEntity;
//}
//else
{
md.up_time = DateTime.Now;
md.status = "0";
md.accounted_time = DateTime.Now;
if (tempBind != null)
{
md.allow_amount = decimal.Parse(tempBind.cardpro);
md.amount = md.allow_amount - md.bill_amount > 0 ? 0 : md.allow_amount - md.bill_amount;
md.user_id = tempBind.userid;
}
_context.SimCost.Add(md);
}
}
_context.SaveChanges();
resultEntity.Result = true;
}
catch (Exception ex)
{
resultEntity.Result = false;
resultEntity.Message = "保存失败,请联系管理员";
ex.Message.ToString();
}
return resultEntity;
}
///
/// 绑定信息查询
///
///
///
public SimCost GetSimCost(int id)
{
var entity = _context.SimCost.Where(c => c.id == id).SingleOrDefault();
if (entity == null)
{
entity = new SimCost();
}
return entity;
}
///
/// 查询内容
///
///
///
public List SearchSimCostByPage(string sim ,int year)
{
List data = new List();
try
{
//var codedata = (from e in _context.SysCodes
// join c in _context.SysCodeDtls
// on e.Id equals c.CodeId
// where e.RecStatus == "A"
// && c.RecStatus == "A"
// && e.CodeTable == "t_sim_bind"
// && e.CodeField == "cardpro"
// select c).OrderBy(x => x.Sort).ToList();
data = _context.SimCostView.Where(c => c.bill_year==year && c.sim_id==sim).OrderBy(c=>c.bill_month).ToList();
//if (!string.IsNullOrEmpty(searchEntity.searchtime))
//{
// var times = searchEntity.searchtime.Split('|');
// if(times.Length==2)
// {
// DateTime d1 = DateTime.Parse(times[0]);
// DateTime d2 = DateTime.Parse(times[1]);
// dt = dt.Where(c => c.accounted_time > d1 && c.accounted_time < d2).ToList();
// }
//}
//if (!string.IsNullOrEmpty(searchEntity.searchsim))
//{
// dt = dt.Where(c => !string.IsNullOrEmpty(c.simcard) && c.simcard.Contains(searchEntity.searchsim)).ToList();
//}
//SimCostDTOSearch searchEntity = new SimCostDTOSearch();
//searchEntity.rows = 20;
//searchEntity.page = 1;
//if (searchEntity.totalrows == 0)
// searchEntity.totalrows = dt.Count();
//var signinList = dt.Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList();
//signinList = signinList.Select(a => new SimBindView()
//{
// cardproChs = ToChs(a.cardpro, codedata),
// Id = a.Id,
// simcard = a.simcard,
// simstatus = a.simstatus,
// up_time = a.up_time,
// username = a.username
//}).ToList();
//data.LoadData(searchEntity, signinList);
}
catch (Exception ex)
{
throw;
}
return data;
}
///
/// 查询费用记录
///
///
///
///
///
public SimCostView GetSimCost(string userid, int bill_year, int bill_month)
{
var entity = _context.SimCostView.Where(x => x.user_id == userid && x.bill_year == bill_year && x.bill_month == bill_month).FirstOrDefault();
return entity;
}
///
/// 查询内容
///
///
///
public ResultDataEntity SearchSimCostYearByPage(SimCostDTOSearch searchEntity)
{
ResultDataEntity data = new ResultDataEntity();
try
{
int year=DateTime.Now.Year;
if (!string.IsNullOrEmpty(searchEntity.searchtime))
{
year = int.Parse(searchEntity.searchtime);
}
var dt = (from c in _context.SimCostYearView where c.bill_year==year select c).ToList();
//添加未有记录的
var stringId = dt.Select(c => c.sim_id).ToList();
var nolog = (from c in _context.SimBindView where !stringId.Contains(c.Id) select c).ToList();
foreach(var item in nolog)
{
SimCostYearView ss = new SimCostYearView();
ss.bill_year = year;
ss.sim_id = item.Id;
ss.sim = item.simcard;
dt.Add(ss);
}
dt = dt.OrderBy(c => c.sim).ToList();
if (!string.IsNullOrEmpty(searchEntity.searchsim))
{
dt = dt.Where(c => c.sim==searchEntity.searchsim).ToList();
}
//if (searchEntity.totalrows == 0)
searchEntity.totalrows = dt.Count();
var signinList = dt.Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList();
if(signinList.Count>0)
{
var month = DateTime.Now.Month-1;
var ck = (from c in _context.SimCost where c.status == "1" && c.bill_year == year orderby c.bill_month descending select c).FirstOrDefault();
if(ck!=null)
{
month= ck.bill_month;
}
foreach (var item in signinList)
{
item.month = month;
}
}
data.LoadData(searchEntity, signinList);
}
catch (Exception ex)
{
throw;
}
return data;
}
#endregion
}
}