public ActionResult ReclamationsSaveItem(string addedBy, string name, /*string ord,*/ string projectName) { var res = false; try { var mng = new CRMManager(); var item = new recl_items { id = 0, created = DateTime.Now, addedBy = addedBy != "" ? addedBy : null, name = name != "" ? name : null, projectID = (int?)RDL.Convert.StrToInt(projectName, 0) != 0 ? (int?)RDL.Convert.StrToInt(projectName, 0) : null, }; mng.SaveReclamation(item); res = true; } catch (Exception ex) { res = false; } return(Json(new { result = res, msg = "" }, JsonRequestBehavior.AllowGet)); }
public static bool BindData(string queueMsg, ILogger log = null) { JsonResult jObject = JsonConvert.DeserializeObject <JsonResult>(queueMsg); string crmURL = string.Empty; try { crmURL = AzureManager.GetValueFromAzureVault(ConfigurationManager.AppSettings["KeyVaultUrl"] + jObject.OrgUniqueName); } catch (Exception ex) { WriteInfoLog(log, "Error in Queue message." + ex.ToString()); } if (!string.IsNullOrEmpty(crmURL)) { var service = CRMManager.GetCRMService(crmURL); Entity entityName = new Entity("ait_msteams"); entityName.Id = new Guid(jObject.RecordId); entityName["ait_teamsid"] = jObject.TeamId; entityName["ait_groupid"] = jObject.GroupId; entityName["ait_teamslibraryurl"] = jObject.TeamLibraryUrl; service.Update(entityName); return(true); } return(false); }
public ActionResult Sources_save() { var parameters = AjaxModel.GetAjaxParameters(HttpContext); var mng = new CRMManager(); try { var fields = (parameters["fields"] as ArrayList).ToArray().ToList().Select(x => x as Dictionary<string, object>).ToList(); var newSources = new crm_sources { id = (AjaxModel.GetValueFromSaveField("id", fields) == "") ? 0 : int.Parse(AjaxModel.GetValueFromSaveField("id", fields)), name = (AjaxModel.GetValueFromSaveField("name", fields)), code = (AjaxModel.GetValueFromSaveField("code", fields)), desc = (AjaxModel.GetValueFromSaveField("desc", fields)) }; mng.SaveClientSources(newSources); return Json(new { result = true, id = newSources.id, mng = "Операция прошла успешно" }, JsonRequestBehavior.AllowGet); } catch (Exception ex) { RDL.Debug.LogError(ex); return Json(new { result = false, id = 0, mng = "Ошибка" }); } }
public ActionResult CreateReclamation(string name, int statusID, string customerText, int haveWOW, int projectID, string reportDate) { var mng = new CRMManager(); int y = Convert.ToInt32(reportDate.Substring(6)); int m = Convert.ToInt32(reportDate.Substring(3, 2)); int d = Convert.ToInt32(reportDate.Substring(0, 2)); var item = new recl_items { id = 0, addedBy = User.Identity.Name, name = name, statusID = statusID, created = DateTime.Now.Date, haveWOW = haveWOW == 1 ? true : false, customerText = customerText, projectID = projectID, reportDate = new DateTime(y, m, d) }; mng.SaveReclamation(item); return Json(new { result = item.id > 0, savedID = item.id, }, JsonRequestBehavior.AllowGet); }
public ActionResult Sources_remove(string id) { var parameters = AjaxModel.GetAjaxParameters(HttpContext); var mng = new CRMManager(); try { if (mng.GetClientSource(int.Parse(id)).crm_clients.Count > 0) { return Json(new { result = false, mng = "Не удается удалить", }, JsonRequestBehavior.AllowGet); } else { mng.DeleteClientSources(int.Parse(id)); return Json(new { result = true, mng = "Операция прошла успешно" }); } } catch (Exception ex) { RDL.Debug.LogError(ex); return Json(new { result = false, mng = "Ошибка" }); } }
private async void CustomerName_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter && CustomerName.TextLength > 0) { customerEntryBindingSource.DataSource = await CRMManager.GetCustomerEntriesAsync(CustomerName.Text); } }
public ActionResult ReclamationsGetText(int id, string code) { var res = false; var text = ""; var mng = new CRMManager(); var r = new recl_items(); try { r = mng.GetReclamation(id); switch (code) { case "customerText": text = r.customerText; break; case "whatToDo": text = r.whatToDo; break; case "report": text = r.report; break; } res = true; } catch (Exception ex) { res = false; } return(Json(new { result = res, text = text })); }
public ActionResult Clients() { var mng = new CRMManager(); ViewBag.statusClientName = mng.GetSQLData<crm_clientStatuses>("GetCRMClientStatuses"); ViewBag.sourceClientName = mng.GetSQLData<crm_sources>("GetCRMSources"); return View(); }
private void OpenEntry_Click(object sender, EventArgs e) { if (Login.Role == "Operator") { MessageBox.Show("Operators do not have access to open entries. Please contact administrator for further details.", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (IsValid) { try { CRMManager.InsertNewCustomerEntry(new CustomerEntry() { CustomerName = CustomerName.Text, Phone = Phone.Text, Email = Email.Text, MarketPlace = "", OrderDate = "", Action = Action.Text, OrderNumber = "", Product = "", Query = Query.Text, Status = "Open", Type = "New", WhatsappMessage = WhatsappMessage.Text }); Notification.Show("Entry Opened.", Notification.Type.Success); Clear(); } catch (Exception ex) { MessageBox.Show($"Could not open entry due to:\nException type: {ex.GetType()}\nMessage: {ex.Message}", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); } } }
public ActionResult Reclamations() { var mng = new CRMManager(); ViewBag.ReclamationStatuses = mng.GetReclamationStatuses(); ViewBag.Projects = mng.GetProjects(); ViewBag.Projects.Insert(0, new tt_projects { id = 0, name = "Не выбран" }); return View(); }
public ActionResult ReclamationsInline(int pk, string value, string name) { var mng = new CRMManager(); mng.EditReclamationField(pk, name, value); return Json(new { result = true }); }
public ActionResult Sources_getItems() { var parameters = AjaxModel.GetParameters(HttpContext); var mng = new CRMManager(); var items = mng.GetClientSources(); var res = items.Select(item => new crm_sources { id = item.id, name = item.name, code = item.code, desc = item.desc }).AsQueryable(); var sorts = parameters.sort.Split(",".ToArray(), StringSplitOptions.RemoveEmptyEntries); var directions = parameters.direction.Split(",".ToArray(), StringSplitOptions.RemoveEmptyEntries); var sort1 = sorts.Length > 0 ? sorts[0] : ""; var direction1 = directions.Length > 0 ? directions[0] : ""; switch (sort1) { case "name": if (direction1 == "up") res = res.OrderBy(x => x.name); else res = res.OrderByDescending(x => x.name); break; case "code": if (direction1 == "up") res = res.OrderBy(x => x.code); else res = res.OrderByDescending(x => x.code); break; case "desc": if (direction1 == "up") res = res.OrderBy(x => x.desc); else res = res.OrderByDescending(x => x.desc); break; default: if (direction1 == "up") res = res.OrderBy(x => x.name); else res = res.OrderByDescending(x => x.name); break; } var total = res.Count(); var res2 = res.Skip(parameters.pageSize * (parameters.page - 1)).Take(parameters.pageSize).ToList(); return Json(new { items =res2.Select(x=> new { x.id, x.name, x.code, x.desc, }), total = items.Count }, JsonRequestBehavior.AllowGet); }
public ActionResult ReclamationsTable() { var mng = new CRMManager(); var haveWOW = new List <string>(); haveWOW.Add(":)"); ViewBag.Statuses = mng.GetReclamationStatuses(); ViewBag.Projects = mng.GetProjects(); ViewBag.haveWOW = haveWOW; return(View()); }
//GET: Contractors public ActionResult Contragents() { var crmManager = new CRMManager(); ViewBag.Clients = crmManager.GetClients(); var hrManager = new HRManager(); ViewBag.Humans = hrManager.GetHumans(); return(View()); }
// GET: Finances public ActionResult Index() { var mng = new FinanceManager(); var mng_hr = new HRManager(); var mng_crm = new CRMManager(); ViewBag.contragentName = mng.GetFinContragents(); ViewBag.typeName = mng.GetFinTypes(); ViewBag.projectName = mng.GetProjects(); ViewBag.statusName = mng.GetFinStatuses(); ViewBag.hrName = mng_hr.GetHumans(); ViewBag.crmName = mng_crm.GetClients(); return(View()); }
// GET: CRM public ActionResult Index() { //var res = Membership.GetUser(name).GetPassword(); var mng = new CRMManager(); /* * Выборка через EF * ViewBag.statusClientName = mng.GetClientStatuses(); * ViewBag.sourceClientName = mng.GetClientSources(); */ ViewBag.statusClientName = mng.GetSQLData<crm_clientStatuses>("GetCRMClientStatuses"); ViewBag.sourceClientName = mng.GetSQLData<crm_sources>("GetCRMSources"); return View(); }
public ActionResult Estimate_save() { var res = false; var msg = ""; try { var parameters = AjaxModel.GetAjaxParameters(HttpContext); var mngCRM = new CRMManager(); var mngCore = new CoreManager(); var email = "*****@*****.**"; //[email protected] var fields = (parameters["fields"] as ArrayList).ToArray().ToList().Select(x => x as Dictionary <string, object>).ToList(); var clName = AjaxModel.GetValueFromSaveField("name", fields); var clEmail = AjaxModel.GetValueFromSaveField("email", fields); var clStype = AjaxModel.GetValueFromSaveField("skype", fields); var clEstimate = RDL.Convert.StrToInt(AjaxModel.GetValueFromSaveField("estimate", fields), 1); var subject = "Хочу сделать оценку своего проекта, " + clName; var body = "<p>Клиент: </p>" + "<p>" + clName + ", e-mail: " + clEmail + ", skype: " + clStype + "</p>" + "<p> Хочет сделать " + (clEstimate == 2 ? "<strong>платную</strong>" : "<strong>бесплатную</strong>") + " оценку своего проекта</p>"; try { mngCore.SendEmail(email, subject, body); msg = "Заказ успешно поступил в обработку"; res = true; } catch (Exception e) { res = false; msg = "Произошла ошибка во время отправки письма"; RDL.Debug.LogError(e, "SendMailToFriend"); } } catch (Exception ex) { res = false; msg = ex.Message; } return(Json(new { result = res, msg = msg }, JsonRequestBehavior.AllowGet)); }
private void CloseEntry_Click(object sender, EventArgs e) { try { if (Login.Role == "Operator") { MessageBox.Show("Operators do not have access close entries. Please contact administrator for further details.", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } CRMManager.UpdateCustomerEntry(selectedId, "Closed"); Notification.Show("Entry Closed.", Notification.Type.Success); Clear(); } catch (Exception ex) { MessageBox.Show($"Could not open entry due to:\nException type: {ex.GetType()}\nMessage: {ex.Message}", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); } }
public ActionResult Clients_remove(int id) { var res = false; var mng = new CRMManager(); var item = mng.GetClient(id); var msg = ""; if (item != null) { mng.DeleteClient(id); msg = "Клиент удален!"; res = true; } return Json(new { result = res, msg = msg }); }
public ActionResult ReclamationsTable_remove(int id) { var res = false; var msg = ""; var mng = new CRMManager(); var item = mng.GetReclamation(id); if (item != null) { mng.DeleteReclamation(id); msg = "Запись успешно удалена!"; res = true; } return(Json(new { result = res, msg = msg })); }
public ActionResult CreateClient(string fio, string note, int sourceID, int statusID) { var mng = new CRMManager(); int? sourceID_ = null; if (sourceID != 0) sourceID_ = sourceID; int? statusID_ = null; if (statusID != 0) statusID_=statusID; var user = HttpContext.User.Identity.Name; var item = new crm_clients { id = 0, fio = fio, city=null, note = note, sourceID =sourceID_, statusID = statusID_, addedBy = user, created = DateTime.Now, nextContact = DateTime.Now, subchannel = null, username = null, needActive = null }; mng.SaveClient(item); return Json(new { result = item.id > 0, clientID = item.id }); }
public ActionResult ClientStatuses_remove(string id) { var parameters = AjaxModel.GetAjaxParameters(HttpContext); var mng = new CRMManager(); try { if (mng.GetClientStatus(int.Parse(id)).crm_clients.Count > 0) { return Json(new { result = false, mng = "Статус связан с клиентом, сначало требуется снять данный статус со всех клиентов" }, JsonRequestBehavior.AllowGet); } else { mng.DeleteClientStatus(int.Parse(id)); return Json(new { result = true, mng = "Оперция успешна" }, JsonRequestBehavior.AllowGet); } } catch (Exception ex) { RDL.Debug.LogError(ex); return Json(new { result = false, mng = "Ошибка" }, JsonRequestBehavior.AllowGet); } }
//#region Admin //[Authorize(Roles = "admin")] public ActionResult ReclamationsTable_getItems() { var parameters = AjaxModel.GetParameters(HttpContext); var mng = new CRMManager(); var addedBy = ""; //var clientID = 0; List <int?> statusIDs = new List <int?>(); List <int?> projectIDs = new List <int?>(); DateTime createdMin = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue; DateTime createdMax = (DateTime)System.Data.SqlTypes.SqlDateTime.MaxValue; DateTime createdMinRep = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue; DateTime createdMaxRep = (DateTime)System.Data.SqlTypes.SqlDateTime.MaxValue; bool isFilterDate = false; bool isFilterDateRep = false; if (parameters.filter != null && parameters.filter.Count > 0) { addedBy = parameters.filter.ContainsKey("addedBy") ? parameters.filter["addedBy"].ToString() : ""; // фильтр для текстового поля //statusIDs = parameters.filter.ContainsKey("statusName") ? (int?)RDL.Convert.StrToInt(parameters.filter["statusName"].ToString(), 0) : 0; // для селекта statusIDs = new List <int?>(); if (parameters.filter.ContainsKey("statusName")) { statusIDs = (parameters.filter["statusName"] as ArrayList).ToArray().Select(x => (int?)RDL.Convert.StrToInt(x.ToString(), 0) == 0 ? null : (int?)RDL.Convert.StrToInt(x.ToString(), 0)).ToList(); // для checkboxes } if (parameters.filter.ContainsKey("projectName")) { projectIDs = (parameters.filter["projectName"] as ArrayList).ToArray().Select(x => (int?)RDL.Convert.StrToInt(x.ToString(), 0) == 0 ? null : (int?)RDL.Convert.StrToInt(x.ToString(), 0)).ToList(); } if (parameters.filter.ContainsKey("created") && parameters.filter["created"] != null) { var dates = parameters.filter["created"].ToString().Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries); if (dates.Length > 0) { createdMin = RDL.Convert.StrToDateTime(dates[0].Trim(), (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue); isFilterDate = true; } if (dates.Length > 1) { createdMax = RDL.Convert.StrToDateTime(dates[1].Trim(), (DateTime)System.Data.SqlTypes.SqlDateTime.MaxValue); isFilterDate = true; } } if (parameters.filter.ContainsKey("reportDate") && parameters.filter["reportDate"] != null) { var datesRep = parameters.filter["reportDate"].ToString().Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries); if (datesRep.Length > 0) { createdMinRep = RDL.Convert.StrToDateTime(datesRep[0].Trim(), (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue); isFilterDateRep = true; } if (datesRep.Length > 1) { createdMaxRep = RDL.Convert.StrToDateTime(datesRep[1].Trim(), (DateTime)System.Data.SqlTypes.SqlDateTime.MaxValue); isFilterDateRep = true; } } } var sorts = parameters.sort.Split(",".ToArray(), StringSplitOptions.RemoveEmptyEntries); var directions = parameters.direction.Split(",".ToArray(), StringSplitOptions.RemoveEmptyEntries); var sort1 = sorts.Length > 0 ? sorts[0] : ""; var direction1 = directions.Length > 0 ? directions[0] : ""; var sort2 = sorts.Length > 1 ? sorts[1] : ""; var direction2 = directions.Length > 1 ? directions[1] : ""; var rep = new CoreRepository(); var p = new DynamicParameters(); p.Add("addedBy", addedBy); //p.Add("clientID", clientID); p.Add("statusIDs", String.Join(",", statusIDs)); p.Add("projectIDs", String.Join(",", projectIDs)); p.Add("createdMin", createdMin); p.Add("createdMax", createdMax); p.Add("createdMinRep", createdMinRep); p.Add("createdMaxRep", createdMaxRep); p.Add("isFilterDate", isFilterDate); p.Add("isFilterDateRep", isFilterDateRep); p.Add("sort1", sort1); p.Add("direction1", direction1); p.Add("sort2", sort2); p.Add("direction2", direction2); p.Add("page", parameters.page); p.Add("pageSize", parameters.pageSize); p.Add("total", dbType: DbType.Int32, direction: ParameterDirection.Output); var items = GetSQLData <ReclamationItem>("GetReclamationsTable", p, CommandType.StoredProcedure); var total = p.Get <int>("total"); var json = JsonConvert.SerializeObject(new { items = items.Select(x => new { x.id, created = x.created != null ? x.created : "Не задано", addedBy = x.addedBy != null ? x.addedBy : "", name = x.name != null ? x.name : "", reportDate = x.reportDate != null ? x.reportDate : "Не задано", statusName = x.statusName != null ? x.statusName : "", projectName = x.projectName != null ? x.projectName : "", haveWOW = x.haveWOW ? ":)" : "" }), total = total }); return(Content(json, "application/json")); }
private async void UC_SearchEntry_Load(object sender, EventArgs e) { CustomerName.AutoCompleteCustomSource = await CRMManager.GetCustomerNamesAsync(); CustomerPhone.AutoCompleteCustomSource = await CRMManager.GetCustomerPhonesAsync(); }
public ActionResult OLD_Clients_getItems() { var parameters = AjaxModel.GetParameters(HttpContext); var mng = new CRMManager(); //var items = mng.GetClients().AsQueryable(); var items = mng.GetSQLClients("GetCRMClients").AsQueryable(); if (parameters.filter != null && parameters.filter.Count > 0) { var text = parameters.filter.ContainsKey("text") ? parameters.filter["text"].ToString() : ""; var sourceID = parameters.filter.ContainsKey("sourceName") ? RDL.Convert.StrToInt(parameters.filter["sourceName"].ToString(), 0) : 0; items = items.Where(x => (sourceID == 0 || x.sourceID == sourceID) ); List<int?> statusIDs = new List<int?>(); if (parameters.filter.ContainsKey("statusName")) { statusIDs = (parameters.filter["statusName"] as ArrayList).ToArray().Select(x => (int?)RDL.Convert.StrToInt(x.ToString(), 0)).ToList(); } items = items.Where(x => (statusIDs.Count == 0 || statusIDs.Contains(x.statusID)) ); var needActive = parameters.filter.ContainsKey("needActive") ? RDL.Convert.StrToInt(parameters.filter["needActive"].ToString(), -1) : -1; items = items.Where(x => //фильтр в этом месте не срабатывает для needActive=NULL (needActive == -1 || x.needActive == (needActive==1 ? true : false)) ); DateTime nextContactMin = DateTime.MinValue, nextContactMax = DateTime.MaxValue; if (parameters.filter.ContainsKey("nextContact") && parameters.filter["nextContact"] != null) { var dates = parameters.filter["nextContact"].ToString().Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries); if (dates.Length > 0) { nextContactMin = RDL.Convert.StrToDateTime(dates[0].Trim(), DateTime.MinValue); } if (dates.Length > 1) { nextContactMax = RDL.Convert.StrToDateTime(dates[1].Trim(), DateTime.MaxValue).AddDays(1); } items = items.Where(x => (nextContactMin <= x.nextContact && x.nextContact <= nextContactMax)); } if (text != "") { items = items.ToList().Where(x => x.fio != null && x.fio.IndexOf(text, StringComparison.CurrentCultureIgnoreCase) >= 0 || x.city != null && x.city.IndexOf(text, StringComparison.CurrentCultureIgnoreCase) >= 0 || x.note != null && x.note.IndexOf(text, StringComparison.CurrentCultureIgnoreCase) >= 0 || x.username != null && x.username.IndexOf(text, StringComparison.CurrentCultureIgnoreCase) >= 0 || x.addedBy != null && x.addedBy.IndexOf(text, StringComparison.CurrentCultureIgnoreCase) >= 0 ).AsQueryable(); } } var sorts = parameters.sort.Split(",".ToArray(), StringSplitOptions.RemoveEmptyEntries); var directions = parameters.direction.Split(",".ToArray(), StringSplitOptions.RemoveEmptyEntries); var sort1 = sorts.Length > 0 ? sorts[0] : ""; var direction1 = directions.Length > 0 ? directions[0] : ""; var sort2 = sorts.Length > 1 ? sorts[1] : ""; var direction2 = directions.Length > 1 ? directions[1] : ""; IOrderedQueryable<crm_clients> orderedItems = items.OrderByDescending(p=>p.created); switch (sort1) { case "fio": if (direction1 == "up") orderedItems = items.OrderBy(x => x.fio); else orderedItems = items.OrderByDescending(x => x.fio); break; case "city": if (direction1 == "up") orderedItems = items.OrderBy(x => x.city); else orderedItems = items.OrderByDescending(x => x.city); break; case "note": if (direction1 == "up") orderedItems = items.OrderBy(x => x.note); else orderedItems = items.OrderByDescending(x => x.note); break; case "addedBy": if (direction1 == "up") orderedItems = items.OrderBy(x => x.addedBy); else orderedItems = items.OrderByDescending(x => x.addedBy); break; case "statusName": if (direction1 == "up") orderedItems = items.OrderBy(x => x.crm_clientStatuses.name); else orderedItems = items.OrderByDescending(x => x.crm_clientStatuses.name); break; case "sourceName": if (direction1 == "up") orderedItems = items.OrderBy(x => x.crm_sources.name); else orderedItems = items.OrderByDescending(x => x.crm_sources.name); break; case "subchannel": if (direction1 == "up") orderedItems = items.OrderBy(x => x.subchannel); else orderedItems = items.OrderByDescending(x => x.subchannel); break; case "username": if (direction1 == "up") orderedItems = items.OrderBy(x => x.username); else orderedItems = items.OrderByDescending(x => x.username); break; case "needActive": if (direction1 == "up") orderedItems = items.OrderBy(x => x.needActive); else orderedItems = items.OrderByDescending(x => x.needActive); break; case "nextContact": if (direction1 == "up") orderedItems = items.OrderBy(x => x.nextContact); else orderedItems = items.OrderByDescending(x => x.nextContact); break; default: if (direction1 == "up") orderedItems = items.OrderBy(x => x.created); else orderedItems = items.OrderByDescending(x => x.created); break; } if (sort2 != "") { switch (sort2) { case "fio": if (direction2 == "up") orderedItems = orderedItems.ThenBy(x => x.fio); else orderedItems = orderedItems.ThenByDescending(x => x.fio); break; case "city": if (direction2 == "up") orderedItems = orderedItems.ThenBy(x => x.city); else orderedItems = orderedItems.ThenByDescending(x => x.city); break; case "note": if (direction2 == "up") orderedItems = orderedItems.ThenBy(x => x.note); else orderedItems = orderedItems.ThenByDescending(x => x.note); break; case "addedBy": if (direction2 == "up") orderedItems = orderedItems.ThenBy(x => x.addedBy); else orderedItems = orderedItems.ThenByDescending(x => x.addedBy); break; case "statusName": if (direction2 == "up") orderedItems = orderedItems.ThenBy(x => x.crm_clientStatuses.name); else orderedItems = orderedItems.ThenByDescending(x => x.crm_clientStatuses.name); break; case "sourceName": if (direction2 == "up") orderedItems = orderedItems.ThenBy(x => x.crm_sources.name); else orderedItems = orderedItems.ThenByDescending(x => x.crm_sources.name); break; case "subchannel": if (direction2 == "up") orderedItems = orderedItems.ThenBy(x => x.subchannel); else orderedItems = orderedItems.ThenByDescending(x => x.subchannel); break; case "username": if (direction2 == "up") orderedItems = orderedItems.ThenBy(x => x.username); else orderedItems = orderedItems.ThenByDescending(x => x.username); break; case "needActive": if (direction2 == "up") orderedItems = orderedItems.ThenBy(x => x.needActive); else orderedItems = orderedItems.ThenByDescending(x => x.needActive); break; case "nextContact": if (direction2 == "up") orderedItems = orderedItems.ThenBy(x => x.nextContact); else orderedItems = orderedItems.ThenByDescending(x => x.nextContact); break; default: if (direction2 == "up") orderedItems = orderedItems.ThenBy(x => x.created); else orderedItems = orderedItems.ThenByDescending(x => x.created); break; } } var total = orderedItems.Count(); var res2 = orderedItems.Skip(parameters.pageSize * (parameters.page - 1)).Take(parameters.pageSize).ToList(); return Json(new { items = res2.Select(x => new { x.id, fio = x.fio ?? "", city = x.city ?? "", note = x.note ?? "", x.sourceID, sourceName = x.crm_sources != null ? x.crm_sources.name : "", x.statusID, statusName = x.crm_clientStatuses != null ? x.crm_clientStatuses.name : "", addedBy = x.addedBy ?? "", created = x.created.GetValueOrDefault().ToString("dd.MM.yyyy"), nextContact = x.nextContact != null ? x.nextContact.GetValueOrDefault().ToString("dd.MM.yyyy") : "", subchannel = x.subchannel ?? "", username = x.username ?? "", needActive=x.needActive.HasValue && x.needActive==true ? "Да" : "Нет" }), total = total }, JsonRequestBehavior.AllowGet); }
public ActionResult Clients_getItems() { var parameters = AjaxModel.GetParameters(HttpContext); var mng = new CRMManager(); var text = ""; var sourceID = 0; var needActive = -1; List<int?> statusID = new List<int?>(); DateTime? nextContactMin = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue; DateTime? nextContactMax = (DateTime)System.Data.SqlTypes.SqlDateTime.MaxValue; if (parameters.filter != null && parameters.filter.Count > 0) { text = parameters.filter.ContainsKey("text") ? parameters.filter["text"].ToString() : ""; needActive = parameters.filter.ContainsKey("needActive") ? RDL.Convert.StrToInt(parameters.filter["needActive"].ToString(), -1) : -1; sourceID = parameters.filter.ContainsKey("sourceName") ? RDL.Convert.StrToInt(parameters.filter["sourceName"].ToString(), 0) : 0; statusID = new List<int?>(); if (parameters.filter.ContainsKey("statusName")) { statusID = (parameters.filter["statusName"] as ArrayList).ToArray().Select(x => (int?)RDL.Convert.StrToInt(x.ToString(), 0)).ToList(); } if (parameters.filter.ContainsKey("nextContact") && parameters.filter["nextContact"] != null) { var dates = parameters.filter["nextContact"].ToString().Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries); if (dates.Length > 0) { nextContactMin = RDL.Convert.StrToDateTime(dates[0].Trim(), (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue); } if (dates.Length > 1) { nextContactMax = RDL.Convert.StrToDateTime(dates[1].Trim(), (DateTime)System.Data.SqlTypes.SqlDateTime.MaxValue); } } } var sorts = parameters.sort.Split(",".ToArray(), StringSplitOptions.RemoveEmptyEntries); var directions = parameters.direction.Split(",".ToArray(), StringSplitOptions.RemoveEmptyEntries); var sort1 = sorts.Length > 0 ? sorts[0] : ""; var direction1 = directions.Length > 0 ? directions[0] : ""; var rep = new CoreRepository(); var p = new DynamicParameters(); p.Add("text", text); p.Add("sourceID", (sourceID == 0) ? "" : Convert.ToString(sourceID)); p.Add("statusID", String.Join(",", statusID)); p.Add("needActive", (needActive == -1) ? "" : Convert.ToString(needActive)); p.Add("nextContactMin", nextContactMin); p.Add("nextContactMax", nextContactMax); p.Add("sort1", sort1); p.Add("direction1", direction1); p.Add("page", parameters.page); p.Add("pageSize", parameters.pageSize); p.Add("total", dbType: DbType.Int32, direction: ParameterDirection.Output); var items = rep.GetSQLData<dynamic>("GetCRMClientsTable", p, CommandType.StoredProcedure); var total = p.Get<int>("total"); var json = JsonConvert.SerializeObject(new { items, total = total }); var res1 = json.Replace("\"needActive\":null", "\"needActive\":\"Не проработано\""); var res2 = res1.Replace("\"needActive\":true", "\"needActive\":\"Да\""); var res3 = res2.Replace("\"needActive\":false", "\"needActive\":\"Нет\""); var res4 = res3.Replace("null", "\"\""); return Content(res4, "application/json"); }