using System; using System.Data; using System.Collections.Generic; using System.Text; using DSWeb.MvcShipping.Models.MsCrmClient; using Microsoft.Practices.EnterpriseLibrary.Data; using DSWeb.Areas.CommMng.Models; using HcUtility.Comm; using DSWeb.EntityDA; namespace DSWeb.MvcShipping.DAL.MsCrmClient { public class MsCrmClientDAL { #region Inquery DataList static public List GetVisitDataList(string strCondition, int start, int limit,string userid,string username,string companyid, out int totel, string sort = null) { var rangstr =""; rangstr = GetRangDAStr("index",userid,username,companyid); if (!string.IsNullOrEmpty(rangstr)) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and " + rangstr; } else { strCondition = rangstr; } } var strSql = new StringBuilder(); strSql.Append("SELECT "); strSql.Append("[GID],[CLIENTGID],(SELECT SHORTNAME FROM info_client WHERE GID=CLIENTGID) SHORTNAME,[CONTACTNAME],[SALE],[VISITWAY],[VISITCONTENT],[VISITDATE],[NEXTACTION],[NEXTCONTENT]"); strSql.Append(",[NEXTDATE],[CREATEUSER],[CREATETIME],[MODIFIEDUSER],[MODIFIEDTIME],VISITTITLE,VISITSTATUS"); strSql.Append(" from crm_info_client_visit "); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" where " + strCondition); } var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by VISITDATE DESC"); } totel = getVisitTotalCount(strCondition); return SetVisitData(strSql); } public static int getVisitTotalCount(string strCondition) { StringBuilder strSql = new StringBuilder(); strSql.Append("select count(*) "); strSql.Append(" FROM crm_info_client_visit where 1=1 "); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" and " + strCondition); } int cnt = 0; Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { cnt = Convert.ToInt32(reader[0]); } } return cnt; } static public MsCrmClientVisit GetVisitData(string condition) { var strSql = new StringBuilder(); strSql.Append("SELECT "); strSql.Append("[GID],[CLIENTGID],(SELECT SHORTNAME FROM info_client WHERE GID=CLIENTGID) SHORTNAME,[CONTACTNAME],[SALE],[VISITWAY],[VISITCONTENT],[VISITDATE],[NEXTACTION],[NEXTCONTENT]"); strSql.Append(",[NEXTDATE],[CREATEUSER],[CREATETIME],[MODIFIEDUSER],[MODIFIEDTIME],VISITTITLE,VISITSTATUS"); strSql.Append(" from crm_info_client_visit "); if (!string.IsNullOrEmpty(condition)) { strSql.Append(" where " + condition); } var list = SetVisitData(strSql); if (list.Count > 0) return list[0]; return new MsCrmClientVisit(); } private static List SetVisitData(StringBuilder strSql) { var headList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { MsCrmClientVisit data = new MsCrmClientVisit(); #region Set DB data to Object data.GID = Convert.ToString(reader["GID"]); data.CLIENTGID = Convert.ToString(reader["CLIENTGID"]); data.SHORTNAME = Convert.ToString(reader["SHORTNAME"]); data.CONTACTNAME = Convert.ToString(reader["CONTACTNAME"]); data.SALE = Convert.ToString(reader["SALE"]); data.VISITWAY = Convert.ToString(reader["VISITWAY"]); data.VISITCONTENT = Convert.ToString(reader["VISITCONTENT"]); if (reader["VISITDATE"] != DBNull.Value) data.VISITDATE = Convert.ToDateTime(reader["VISITDATE"]).ToString("yyyy-MM-dd");// data.NEXTACTION = Convert.ToString(reader["NEXTACTION"]); data.NEXTCONTENT = Convert.ToString(reader["NEXTCONTENT"]); if (reader["NEXTDATE"] != DBNull.Value) data.NEXTDATE = Convert.ToDateTime(reader["NEXTDATE"]).ToString("yyyy-MM-dd HH:mm:ss");// data.VISITTITLE = Convert.ToString(reader["VISITTITLE"]); data.VISITSTATUS = Convert.ToString(reader["VISITSTATUS"]); data.CREATEUSER = Convert.ToString(reader["CREATEUSER"]); data.CREATETIME = Convert.ToString(reader["CREATETIME"]); #endregion headList.Add(data); } reader.Close(); } return headList; } #endregion #region 权限范围 public static string GetRangDAStr(string tb, string userid, string username, string companyid) { string str = ""; var strSql = new StringBuilder(); strSql.Append("SELECT "); strSql.Append(" VISIBLERANGE,OPERATERANGE,AUTHORITYID "); strSql.Append(" from VW_User_Authority "); strSql.Append(" where [NAME]='modCrmClientVisit' and USERID='" + userid + "' and ISDELETE=0"); string visiblerange = "4"; string operaterange = "4"; string AUTHORITYID = ""; Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { visiblerange = Convert.ToString(reader["VISIBLERANGE"]); operaterange = Convert.ToString(reader["OPERATERANGE"]); AUTHORITYID = Convert.ToString(reader["AUTHORITYID"]); break; } reader.Close(); } if (visiblerange == "4") { str = " SALE='" + username + "' or CREATEUSER='" + username + "' "; } else if (visiblerange == "3") { str = " SALE='" + username + "' or CREATEUSER='" + username + "' "; } else if (visiblerange == "2") { var rangeDa = new RangeDA(); var deptid = rangeDa.GetDEPTGID(userid); str = " (SALE in (select showname from vw_user where deptgid='" + deptid + "') OR CREATEUSER in (select userid from vw_user where deptgid='" + deptid + "') )"; } else if (visiblerange == "5") { str = " 1=1 "; } else if (visiblerange == "6") { str = " EXISTS (select 1 from user_authority_range_op P left join [user] u on (u.GID=P.OPID) where (crm_info_client_visit.SALE=U.SHOWNAME OR crm_info_client_visit.CREATEUSER=p.OPID ) AND P.userid='" + userid + "' and P.AUTHORITYID='" + AUTHORITYID + "' and P.VISIBLERANGE=1) "; } else if (visiblerange == "1") { str = " 1=1 "; } if (str != "") { str = "(" + str + ")"; } return str; } #endregion } }