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));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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 = "Ошибка"
                });
            }
        }
Exemplo n.º 4
0
 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);
 }
Exemplo n.º 5
0
        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 = "Ошибка"
                });
            }
        }
Exemplo n.º 6
0
 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
            }));
        }
Exemplo n.º 8
0
 public ActionResult Clients()
 {
     var mng = new CRMManager();
     ViewBag.statusClientName = mng.GetSQLData<crm_clientStatuses>("GetCRMClientStatuses");
     ViewBag.sourceClientName = mng.GetSQLData<crm_sources>("GetCRMSources");
     return View();
 }
Exemplo n.º 9
0
 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);
         }
     }
 }
Exemplo n.º 10
0
        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();
        }
Exemplo n.º 11
0
 public ActionResult ReclamationsInline(int pk, string value, string name)
 {
     var mng = new CRMManager();
     mng.EditReclamationField(pk, name, value);
     return Json(new
     {
         result = true
     });
 }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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());
        }
Exemplo n.º 14
0
        //GET: Contractors
        public ActionResult Contragents()
        {
            var crmManager = new CRMManager();

            ViewBag.Clients = crmManager.GetClients();

            var hrManager = new HRManager();

            ViewBag.Humans = hrManager.GetHumans();

            return(View());
        }
Exemplo n.º 15
0
        // 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());
        }
Exemplo n.º 16
0
        // 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();
        }
Exemplo n.º 17
0
        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));
        }
Exemplo n.º 18
0
 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);
     }
 }
Exemplo n.º 19
0
        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
            });
        }
Exemplo n.º 20
0
        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
            }));
        }
Exemplo n.º 21
0
        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
            });
        }
Exemplo n.º 22
0
        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);
            }
        }
Exemplo n.º 23
0
        //#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"));
        }
Exemplo n.º 24
0
        private async void UC_SearchEntry_Load(object sender, EventArgs e)
        {
            CustomerName.AutoCompleteCustomSource = await CRMManager.GetCustomerNamesAsync();

            CustomerPhone.AutoCompleteCustomSource = await CRMManager.GetCustomerPhonesAsync();
        }
Exemplo n.º 25
0
        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);
        }
Exemplo n.º 26
0
        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");
        }