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.id == md.id).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.accounted_time.Month; 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"; 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 ResultDataEntity SearchSimCostByPage(SimCostDTOSearch 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.SimCostView.OrderByDescending(c => c.accounted_time).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(); } 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; } #endregion } }