/// <summary> /// Add new companies to an existing sub-campaign /// </summary> /// <param name="lstAcctIds"></param> /// <param name="SubCampaignId"></param> public static void AddCompaniesToSubCampaign(List<int> lstAcctIds, int SubCampaignId, string ListSource = "") { BrightPlatformEntities _efDbModel = new BrightPlatformEntities(UserSession.EntityConnection); int? _FinalListId = _efDbModel.final_lists.FirstOrDefault(i => i.sub_campaign_id == SubCampaignId).id; if (_FinalListId > 0) { foreach (int _AcctId in lstAcctIds) { sub_campaign_account_lists _item = new sub_campaign_account_lists() { final_list_id = (int)_FinalListId, account_id = _AcctId, created_by = UserSession.CurrentUser.UserId, created_on = DateTime.Now, modified = false, active = true, priority = null, locked = false, locked_by = null, locked_timestamp = null, assigned_to = null, list_source = ListSource, modified_by = UserSession.CurrentUser.UserId, modified_on = DateTime.Now }; _efDbModel.sub_campaign_account_lists.AddObject(_item); } _efDbModel.SaveChanges(); } }
/** / private void GetFindFilterString(string pFilterText) { m_CampaignListFindFilter = string.Empty; if (string.IsNullOrEmpty(pFilterText)) return; List<string> _FilterString = new List<string>(); for (int i = 0; i < gvCampaignList.VisibleColumns.Count; i++) { if (CampaignListMode == eCampaignListMode.CompaniesOnly) { if (gvCampaignList.VisibleColumns[i].FieldName.Equals("id") || gvCampaignList.VisibleColumns[i].FieldName.Equals("contact_status") || gvCampaignList.VisibleColumns[i].FieldName.Equals("account_id") || gvCampaignList.VisibleColumns[i].FieldName.Equals("locked") || gvCampaignList.VisibleColumns[i].FieldName.Equals("locked_by") || gvCampaignList.VisibleColumns[i].FieldName.Equals("locked_timestamp") || gvCampaignList.VisibleColumns[i].FieldName.Equals("final_list_id") || gvCampaignList.VisibleColumns[i].FieldName.Equals("account_latitude") || gvCampaignList.VisibleColumns[i].FieldName.Equals("account_longitude") || gvCampaignList.VisibleColumns[i].FieldName.Equals("contact_id") || gvCampaignList.VisibleColumns[i].FieldName.Equals("account_address")) continue; //gvCampaignList.VisibleColumns[i].FieldName.Equals("Company_Employees_Total_1") || //gvCampaignList.VisibleColumns[i].FieldName.Equals("Company_Employees_Total_2") || //gvCampaignList.VisibleColumns[i].FieldName.Equals("Company_Employees_Total_3") || //gvCampaignList.VisibleColumns[i].FieldName.Equals("Company_Turnover_1") || //gvCampaignList.VisibleColumns[i].FieldName.Equals("Company_Turnover_2") || //gvCampaignList.VisibleColumns[i].FieldName.Equals("Company_Turnover_3") || //gvCampaignList.VisibleColumns[i].FieldName.Equals("Company_Export_1") || //gvCampaignList.VisibleColumns[i].FieldName.Equals("Company_Export_2") || //gvCampaignList.VisibleColumns[i].FieldName.Equals("Company_Export_3") || //gvCampaignList.VisibleColumns[i].FieldName.Equals("Company_Result_1") || //gvCampaignList.VisibleColumns[i].FieldName.Equals("Company_Result_2") || //gvCampaignList.VisibleColumns[i].FieldName.Equals("Company_Result_3") || //gvCampaignList.VisibleColumns[i].FieldName.Equals("Company_Sales_Aborad_1") || //gvCampaignList.VisibleColumns[i].FieldName.Equals("Company_Sales_Aborad_2") || //gvCampaignList.VisibleColumns[i].FieldName.Equals("Company_Sales_Aborad_3") || //gvCampaignList.VisibleColumns[i].FieldName.Equals("Company_Created") || //gvCampaignList.VisibleColumns[i].FieldName.Equals("Company_Modified") || //gvCampaignList.VisibleColumns[i].FieldName.Equals("Company_Validated")) } else if (CampaignListMode == eCampaignListMode.CompaniesAndContacts) { if (gvCampaignList.VisibleColumns[i].FieldName.Equals("id") || gvCampaignList.VisibleColumns[i].FieldName.Equals("contact_status") || gvCampaignList.VisibleColumns[i].FieldName.Equals("account_id") || gvCampaignList.VisibleColumns[i].FieldName.Equals("locked") || gvCampaignList.VisibleColumns[i].FieldName.Equals("locked_by") || gvCampaignList.VisibleColumns[i].FieldName.Equals("locked_timestamp") || gvCampaignList.VisibleColumns[i].FieldName.Equals("final_list_id") || gvCampaignList.VisibleColumns[i].FieldName.Equals("account_latitude") || gvCampaignList.VisibleColumns[i].FieldName.Equals("account_longitude") || gvCampaignList.VisibleColumns[i].FieldName.Equals("contact_latitude") || gvCampaignList.VisibleColumns[i].FieldName.Equals("contact_longitude") || gvCampaignList.VisibleColumns[i].FieldName.Equals("contact_address") || gvCampaignList.VisibleColumns[i].FieldName.Equals("contact_id") || gvCampaignList.VisibleColumns[i].FieldName.Equals("account_address")) continue; } _FilterString.Add(string.Format("Contains(Lower({0}),'{1}')", gvCampaignList.VisibleColumns[i].FieldName, pFilterText.ToLowerInvariant() )); } if (_FilterString.Count > 0) m_CampaignListFindFilter = string.Join(" Or ", _FilterString.ToArray()); } private void GetCheckedFilters() { m_CampaignListCheckedFilter = string.Empty; List<string> _FilterString = new List<string>(); if (cbxFilterMeLastUser.Checked) _FilterString.Add(string.Format("Contains(Lower([Company_Last_User]),Lower('{0}'))", UserSession.CurrentUser.UserFullName )); if (cbxShowOnlyNonFinished.Checked) _FilterString.Add("[Company_Status] != 'Finished'"); if (_FilterString.Count > 0) m_CampaignListCheckedFilter = string.Join(" And ", _FilterString.ToArray()); } private void GetSpecificColumnFilters() { m_CampaignListSpecificColumnFilter = string.Empty; if (string.IsNullOrEmpty(m_OperatorArgs.Value.ToString())) return; try { DevExpress.Data.Filtering.GroupOperator _Operators = (DevExpress.Data.Filtering.GroupOperator)m_OperatorArgs.Value; for (int i = 0; i < _Operators.Operands.Count; i++) { string _Operator = _Operators.Operands[i].ToString(); if (_Operator.Contains("=") || _Operator.Contains(">") || _Operator.Contains(">=") || _Operator.Contains("<") || _Operator.Contains("<=") || _Operator.Contains("<>") || _Operator.Contains("Between") || _Operator.Contains("Is Null") || _Operator.Contains("Is Not Null")) { string _operand_value = ((DevExpress.Data.Filtering.BinaryOperator)(_Operators.Operands[i])).RightOperand.ToString(); //if (ValidationUtility.IsCurrency(_Operators.Operands[i].ToString())) if (ValidationUtility.IsCurrency(_operand_value.Replace("'", ""))) continue; } string _value = _Operators.Operands[i].ToString().Replace("'", """); _Operators.Operands[i] = _value.Replace("[", "Lower(").Replace("]", ")"); } m_CampaignListSpecificColumnFilter = _Operators.ToString().Replace("'L", "L").Replace(";'", ";"); m_CampaignListSpecificColumnFilter = m_CampaignListSpecificColumnFilter.Replace("'", "").Replace(""", "'"); } catch { string _Val = m_OperatorArgs.Value.ToString(); if (_Val.Contains("=") || _Val.Contains(">") || _Val.Contains(">=") || _Val.Contains("<") || _Val.Contains("<=") || _Val.Contains("<>") || _Val.Contains("Between") || _Val.Contains("Is Null") || _Val.Contains("Is Not Null")) { string _operand_value = ((DevExpress.Data.Filtering.BinaryOperator)(m_OperatorArgs.Value)).RightOperand.ToString(); if (!ValidationUtility.IsCurrency(_operand_value.Replace("'", ""))) { string _temp = _Val.Replace("'", """); _Val = _temp.Replace("[", "Lower(").Replace("]", ")"); } else m_CampaignListSpecificColumnFilter = _Val; } else { DevExpress.Data.Filtering.CriteriaOperatorCollection _operators = ((DevExpress.Data.Filtering.FunctionOperator)(((DevExpress.Data.Filtering.CriteriaOperator)(m_OperatorArgs.Value)))).Operands; string _operand_value = _operators[1].ToString(); if (!ValidationUtility.IsCurrency(_operand_value.Replace("'", ""))) { string _temp = _Val.Replace("'", """); _Val = _temp.Replace("[", "Lower(").Replace("]", ")"); } m_CampaignListSpecificColumnFilter = _Val; //.Replace("[", "Lower(").Replace("]", ")"); } m_CampaignListSpecificColumnFilter = _Val.Replace("'", "").Replace(""", "'"); } //if (string.IsNullOrEmpty(gvCampaignList.FilterPanelText)) { // m_CampaignListSpecificColumnFilter = string.Empty; // return; //} //string[] _ColumnFilter = Regex.Split(gvCampaignList.FilterPanelText, " And "); //for (int i = 0; i < _ColumnFilter.Count(); i++) { // if (_ColumnFilter[i].Contains(">") || // _ColumnFilter[i].Contains(">=") || // _ColumnFilter[i].Contains("<") || // _ColumnFilter[i].Contains("<=") || // _ColumnFilter[i].Contains("Between") || // _ColumnFilter[i].Contains("Is Null") || // _ColumnFilter[i].Contains("Is Not Null") || // _ColumnFilter[i].Contains("In")) // continue; //} //m_CampaignListSpecificColumnFilter = string.Join(" A ", _ColumnFilter.ToArray()); //if (!string.IsNullOrEmpty(m_CampaignListSpecificColumnFilter)) // m_CampaignListSpecificColumnFilter = m_CampaignListSpecificColumnFilter.Replace("[", "Lower(").Replace("]", ")"); } /**/ private void WorkOnSelectedAccount() { if (gvCampaignList.RowCount < 1) return; try { this.ReleaseCurrentCompanyLock(); bool islocked = m_CurrentCampaignListAccount.locked; int? lockedBy = m_CurrentCampaignListAccount.locked_by; bool _State = islocked && lockedBy != UserSession.CurrentUser.UserId ? false : true; btnWorkOnCompany.Enabled = _State; btnRemoveCompany.Enabled = _State; if ((islocked && lockedBy == UserSession.CurrentUser.UserId) || !islocked) { using (BrightPlatformEntities _efDbContext = new BrightPlatformEntities(UserSession.EntityConnection)) { m_CurrentCampaignListAccount.locked = true; m_CurrentCampaignListAccount.locked_by = UserSession.CurrentUser.UserId; m_CurrentCampaignListAccount.locked_timestamp =_efDbContext.FIUpdateUserLock( m_FinalListId, m_AccountId, m_CurrentCampaignListAccount.locked, m_CurrentCampaignListAccount.locked_by ).FirstOrDefault(); } gvCampaignList.SetRowCellValue(gvCampaignList.FocusedRowHandle, "locked", m_CurrentCampaignListAccount.locked); gvCampaignList.SetRowCellValue(gvCampaignList.FocusedRowHandle, "locked_by", m_CurrentCampaignListAccount.locked_by); gvCampaignList.SetRowCellValue(gvCampaignList.FocusedRowHandle, "Locked_By_User", UserSession.CurrentUser.UserFullName); gvCampaignList.SetRowCellValue(gvCampaignList.FocusedRowHandle, "locked_timestamp", m_CurrentCampaignListAccount.locked_timestamp); this.LoadCampaignBooking(ObjectEventSender.btnWorkOnCompany_Click); } else { gvCampaignList.SetRowCellValue(gvCampaignList.FocusedRowHandle, "locked", true); NotificationDialog.Warning("Bright Sales", "The selected company is currently edited by another user. Please try again later."); m_CurrentCampaignListAccount = null; } } catch (Exception e) { m_EventBus.Notify(new FrmSalesConsultantEvents.Tracer() { ErrorMessage = e.Message }); } }
public bool CanWorkCompany() { if (gvCampaignList.RowCount < 1) return false; this.GetCurrentCampaignListAccount(); this.ReleaseCurrentCompanyLock(); //this.GetCurrentCampaignListAccount(); if (m_CurrentCampaignListAccount == null) return false; bool islocked = m_CurrentCampaignListAccount.locked; int? lockedBy = m_CurrentCampaignListAccount.locked_by; if ((islocked && lockedBy == UserSession.CurrentUser.UserId) || !islocked) { var BPContext = new BrightPlatformEntities(UserSession.EntityConnection); m_CurrentCampaignListAccount.locked = true; m_CurrentCampaignListAccount.locked_by = UserSession.CurrentUser.UserId; m_CurrentCampaignListAccount.locked_timestamp = BPContext.FIUpdateUserLock( m_CurrentCampaignListAccount.final_list_id, m_CurrentCampaignListAccount.account_id, m_CurrentCampaignListAccount.locked, m_CurrentCampaignListAccount.locked_by).FirstOrDefault(); gvCampaignList.SetRowCellValue(gvCampaignList.FocusedRowHandle, "locked", m_CurrentCampaignListAccount.locked); gvCampaignList.SetRowCellValue(gvCampaignList.FocusedRowHandle, "locked_by", m_CurrentCampaignListAccount.locked_by); gvCampaignList.SetRowCellValue(gvCampaignList.FocusedRowHandle, "locked_user", UserSession.CurrentUser.UserFullName); gvCampaignList.SetRowCellValue(gvCampaignList.FocusedRowHandle, "locked_timestamp", m_CurrentCampaignListAccount.locked_timestamp); return true; } else { NotificationDialog.Warning("Bright Sales", "The selected company is currently edited by another user. Please try again later."); m_CurrentCampaignListAccount = null; return false; } }
private void GetCurrentCampaignListAccount() { m_CurrentCampaignListAccount = null; this.GetSelectedCampaignListRowCommonlyUsedFields(); using (BrightPlatformEntities _efDbModel = new BrightPlatformEntities(UserSession.EntityConnection)) { m_CurrentCampaignListAccount = _efDbModel.sub_campaign_account_lists.FirstOrDefault(p => p.account_id == m_AccountId && p.final_list_id == m_FinalListId && p.active == true ); if (m_CurrentCampaignListAccount != null) _efDbModel.Detach(m_CurrentCampaignListAccount); } }
private void GetReportPageBaseData() { m_IsEmpty = false; if (this.gridView1.DataRowCount == null || this.gridView1.DataRowCount < 1) { BrightVision.Common.UI.NotificationDialog.Information("Reports", "No data to preview."); m_IsEmpty = true; return; } using (BrightPlatformEntities _efDbModel = new BrightPlatformEntities(m_DatabaseConnection) { CommandTimeout = 0 }) { m_eftConfigData = _efDbModel.view_configuration.FirstOrDefault(i => i.id == m_ViewConfigId); m_eftSubCampaign = _efDbModel.subcampaigns.FirstOrDefault(i => i.id == m_eftConfigData.subcampaign_id); m_eftCampaign = _efDbModel.campaigns.FirstOrDefault(i => i.id == m_eftSubCampaign.campaign_id); m_eftCustomer = _efDbModel.customers.FirstOrDefault(i => i.id == m_eftCampaign.customer_id); _efDbModel.Detach(m_eftConfigData); _efDbModel.Detach(m_eftSubCampaign); _efDbModel.Detach(m_eftCampaign); _efDbModel.Detach(m_eftCustomer); _efDbModel.FIUpdateContactTitles(); /** * if send email, get data for sub_campaign_account_list and final_list. */ if (m_CallingEnvironment == eCallingEnvironment.BrightSales_SendEmail && m_AccountId > 0) { m_eftFinalList = _efDbModel.final_lists.FirstOrDefault(i => i.sub_campaign_id == m_eftSubCampaign.id); if (m_eftFinalList != null) { _efDbModel.Detach(m_eftFinalList); m_eftSubCampaignAccountList = _efDbModel.sub_campaign_account_lists.FirstOrDefault(i => i.final_list_id == m_eftFinalList.id && i.account_id == m_AccountId ); _efDbModel.Detach(m_eftSubCampaignAccountList); } } } if (m_eftConfigData == null || m_eftConfigData.report_layout_config == null) { WaitDialog.Close(); if (m_IsWebPortalCall) throw new Exception("No layout available for the selected view."); BrightVision.Common.UI.NotificationDialog.Information("Reports", "No layout available for this view."); return; } if (string.IsNullOrEmpty(m_eftConfigData.report_data_config)) { WaitDialog.Close(); if (m_IsWebPortalCall) throw new Exception("No parameter layout has been set for this report."); BrightVision.Common.UI.NotificationDialog.Information("Reports", "No parameter layout has been set for this report."); return; } m_ReportPageTemplateProperty = SerializeUtility.DeserializeFromXml<TemplateProperty>(m_eftConfigData.report_data_config); m_ReportPageDataSet = this.GetReportDataSet(m_ReportPageTemplateProperty); /** * if has sort info, then apply. */ #region Sorting Logic if (!string.IsNullOrEmpty(m_GridSortInfo)) { string sortExpression = this.GetSortExpression(gridView1); if (!string.IsNullOrEmpty(sortExpression)) { string[] _SortInfoCollection = sortExpression.Split(';'); ReportDataSet _rdsTemporary = (ReportDataSet)m_ReportPageDataSet.Clone(); DataSet _dsSortedData = new DataSet(); Dictionary<string, List<string>> _TableSortRules = new Dictionary<string, List<string>>(); /** * group all sort rules by table. */ foreach (string _SortInfo in _SortInfoCollection) { string[] _item = _SortInfo.Split('|'); string _FieldNameInfo = this.GetTableFieldName(_item[0].ToString()); if (!string.IsNullOrEmpty(_FieldNameInfo)) { string[] _val = _FieldNameInfo.Split('|'); string _TableName = _val[0]; string _FieldName = _val[1]; /** * create new table sort rule. * else, update existing table sort rule. * * format: * <column_name1>|<sort_rule1>;<column_name2>|<sort_rule2>; and so on ... * * this would later be processed by splitting the sort rules by semicolon(;), * then split by bar(|). */ string _ColumnName = m_ReportPageDataSet.Tables[_TableName].Columns[_FieldName].ColumnName; string _SortOrder = _item[1].ToString(); if (!_TableSortRules.ContainsKey(_TableName)) _TableSortRules.Add(_TableName, new List<string>()); _TableSortRules[_TableName].Add(string.Format("{0} {1}", _ColumnName, _SortOrder)); } } /** * set the sorting rules from KeyValuePair<string, List<string>> from _TableSortRules * string = table name * List<string> = sort rules */ foreach (KeyValuePair<string, List<string>> _pair in _TableSortRules) { DataTable _dtToSort = m_ReportPageDataSet.Tables[_pair.Key]; _dtToSort.DefaultView.Sort = string.Join(",", _TableSortRules[_pair.Key].ToArray()); _dsSortedData.Tables.Add(_dtToSort.DefaultView.ToTable()); } /** * copy all tables to the temporary report data set. * then overwrite the original report data set with the * temporary report dataset, since it contains the sorted * tables that the report needs. * * order of the tables, according to relationship: * 1. account * 2. accountdynamic * 3. accountstatic * 4. contact * 5. contactdynamic * 6. contactstatic * 7. clientinfo * 8. customers */ if (_dsSortedData.Tables["account"] != null) this.CopyTableRows(ref _rdsTemporary, _dsSortedData.Tables["account"].Rows, "account"); else this.CopyTableRows(ref _rdsTemporary, m_ReportPageDataSet.Tables["account"].Rows, "account"); if (_dsSortedData.Tables["accountdynamic"] != null) this.CopyTableRows(ref _rdsTemporary, _dsSortedData.Tables["accountdynamic"].Rows, "accountdynamic"); else this.CopyTableRows(ref _rdsTemporary, m_ReportPageDataSet.Tables["accountdynamic"].Rows, "accountdynamic"); if (_dsSortedData.Tables["accountstatic"] != null) this.CopyTableRows(ref _rdsTemporary, _dsSortedData.Tables["accountstatic"].Rows, "accountstatic"); else this.CopyTableRows(ref _rdsTemporary, m_ReportPageDataSet.Tables["accountstatic"].Rows, "accountstatic"); if (_dsSortedData.Tables["contact"] != null) this.CopyTableRows(ref _rdsTemporary, _dsSortedData.Tables["contact"].Rows, "contact"); else this.CopyTableRows(ref _rdsTemporary, m_ReportPageDataSet.Tables["contact"].Rows, "contact"); if (_dsSortedData.Tables["contactdynamic"] != null) this.CopyTableRows(ref _rdsTemporary, _dsSortedData.Tables["contactdynamic"].Rows, "contactdynamic"); else this.CopyTableRows(ref _rdsTemporary, m_ReportPageDataSet.Tables["contactdynamic"].Rows, "contactdynamic"); if (_dsSortedData.Tables["contactstatic"] != null) this.CopyTableRows(ref _rdsTemporary, _dsSortedData.Tables["contactstatic"].Rows, "contactstatic"); else this.CopyTableRows(ref _rdsTemporary, m_ReportPageDataSet.Tables["contactstatic"].Rows, "contactstatic"); if (_dsSortedData.Tables["clientinfo"] != null) this.CopyTableRows(ref _rdsTemporary, _dsSortedData.Tables["clientinfo"].Rows, "clientinfo"); else this.CopyTableRows(ref _rdsTemporary, m_ReportPageDataSet.Tables["clientinfo"].Rows, "clientinfo"); if (_dsSortedData.Tables["customers"] != null) this.CopyTableRows(ref _rdsTemporary, _dsSortedData.Tables["customers"].Rows, "customers"); else this.CopyTableRows(ref _rdsTemporary, m_ReportPageDataSet.Tables["customers"].Rows, "customers"); m_ReportPageDataSet = null; m_ReportPageDataSet = _rdsTemporary; } } #endregion }
/// <summary> /// Save updated subcampaign account lists /// </summary> public static void SaveFinalCallListAccounts(List<CTFinalCallListAccount> Items, int SubCampaignId) { bool _HasUpdates = false; sub_campaign_account_lists ItemToupdate = new sub_campaign_account_lists(); BrightPlatformEntities objDbModel = new BrightPlatformEntities(UserSession.EntityConnection); foreach (CTFinalCallListAccount item in Items) { ItemToupdate = null; ItemToupdate = objDbModel.sub_campaign_account_lists.FirstOrDefault(i => i.id == item.id); if (ItemToupdate == null) continue; ItemToupdate.active = item.active.Equals("Yes")? true: false; ItemToupdate.modified = item.modified.Equals("Yes") ? true : false; ItemToupdate.priority = item.priority; ItemToupdate.assigned_to = item.assigned_to; ItemToupdate.modified = true; ItemToupdate.modified_on = DateTime.Now; ItemToupdate.modified_by = UserSession.CurrentUser.UserId; objDbModel.sub_campaign_account_lists.ApplyCurrentValues(ItemToupdate); _HasUpdates = true; } if (_HasUpdates) { var item = objDbModel.final_lists.FirstOrDefault(i => i.sub_campaign_id == SubCampaignId); if (item != null) { item.modified_by = UserSession.CurrentUser.UserId; item.modified_on = DateTime.Now; } objDbModel.SaveChanges(); } }