SafeDispatch/SubscriberAndUserManager/GroupsForm.cs

979 lines
44 KiB
C#
Raw Permalink Normal View History

2024-02-22 16:43:59 +00:00
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Telerik.WinControls;
using SafeMobileLib;
using Telerik.WinControls.UI;
using System.Linq;
namespace SubscriberAndUserManager
{
public partial class GroupsForm : Telerik.WinControls.UI.RadForm
{
private DBgroupsManager DBgrp;
private DBgatewaysManager DBgateways;
private DBcontactsManager DBcontact = new DBcontactsManager(MainForm.DBServer, MainForm.DBSchema, MainForm.DBUser, MainForm.DBPass, MainForm.DBPort);
private List<Group> grps;
private string action;
private controlUnit parent;
List<RadioGateway> radioGWList;
public static GroupsForm Instance;
private void setLanguage(String action)
{
//switch (action)
//{
// case "add":
// this.Text = MainForm.returnLNGString("addnewgrp");
// lbGroupName.Text = MainForm.returnLNGString("newgrp") + ":";
// lbGroupType.Text = MainForm.returnLNGString("grpType") + ":";
// btnSave.Text = MainForm.returnLNGString("addgrp");
// break;
// case "edit":
// this.Text = MainForm.returnLNGString("editgrp");
// lbGroupName.Text = MainForm.returnLNGString("editgrpname") + ":";
// cbGroupType.Enabled = false;
// btnSave.Text = MainForm.returnLNGString("editgrp");
// break;
// case "delete":
// this.Text = MainForm.returnLNGString("delgrp");
// tbGroupName.Enabled = false;
// cbGroupType.Enabled = false;
// cbGatewayAndRadioGW.Enabled = false;
// lbGroupName.Text = MainForm.returnLNGString("grpname") + ":";
// btnSave.Text = MainForm.returnLNGString("delgrp");
// break;
//}
this.Text = MainForm.returnLNGString("lbGrp");
lbGroupName.Text = MainForm.returnLNGString("name") + ":";
cbGroupType.Enabled = false;
btnSave.Text = MainForm.returnLNGString("save");
btnExit.Text = MainForm.returnLNGString("exit");
lbGroups.Text = MainForm.returnLNGString("lbGrp");
lbGroupType.Text = MainForm.returnLNGString("grpType");
lbAssignedMembers.Text = MainForm.returnLNGString("assignmembers");
lbUnassignedMembers.Text = MainForm.returnLNGString("unassignmembers");
lbGWandRGW.Text = MainForm.returnLNGString("GWAndRadioGW");
GridViewGroupsList.Columns["Name"].HeaderText = MainForm.returnLNGString("name");
GridViewGroupsList.Columns["Type"].HeaderText = MainForm.returnLNGString("type");
GridViewGroupsList.Columns["CPS_Id"].HeaderText = MainForm.returnLNGString("id");
GridViewGroupsList.Columns["GatewayName"].HeaderText = MainForm.returnLNGString("gatewayName");
GridViewGroupsList.Columns["Id"].HeaderText = MainForm.returnLNGString("id");
GridViewGroupsList.Columns["RgwID"].HeaderText = MainForm.returnLNGString("rgwID");
radPageMembers.Text = MainForm.returnLNGString("members");
setGroupTypeLanguageValues();
}
public static GroupsForm GetSingleton(controlUnit _parent, DBgroupsManager DBgrp, DBgatewaysManager DBgw, string action)
{
if (Instance == null)
Instance = new GroupsForm(_parent, DBgrp, DBgw, action);
else
{
if (Instance.IsDisposed)
Instance = new GroupsForm(_parent, DBgrp, DBgw, action);
}
return Instance;
}
private void setGroupTypeLanguageValues()
{
GroupType.SetCategoryLanguageName(MainForm.returnLNGString("category"));
GroupType.SetMobileTalkLanguageName(MainForm.returnLNGString("mobiletalk"));
GroupType.SetRadioTalkLanguageName(MainForm.returnLNGString("radiotalk"));
}
public GroupsForm(controlUnit _parent, DBgroupsManager DBgrp, DBgatewaysManager DBgw, string action)
{
this.parent = _parent;
this.DBgrp = DBgrp;
this.DBgateways = DBgw;
this.action = action;
InitializeComponent();
setGroupTypeLanguageValues();
cbGroupType.Items.Add(GroupType.CATEGORY.displayedName);
//if(MainForm.radioType != RADIOTYPE.SIMOCO)
radioGWList = DBgateways.gelAllGatewaysAndRadioGateways();
if (!MainForm.hideLinxFeatures && radioGWList.Where(x => x.Type == (int)GatewayType.Broadband).Count() > 0)
cbGroupType.Items.Add(GroupType.MOBILETALK.displayedName);
if (radioGWList.Where(x => x.Type == (int)GatewayType.Tier2Radio || x.Type == (int)GatewayType.Tier3Radio
|| x.Type == (int)GatewayType.SMCBridge).Count() > 0)
cbGroupType.Items.Add(GroupType.RADIOTALK.displayedName);
cbGroupType.SelectedIndex = 0;
ShowGroups();
setLanguage(action);
switch (MainForm.radioType)
{
case RADIOTYPE.CONECTPLUS:
case RADIOTYPE.LISF:
cbGroupType.Items.RemoveAt(1);
break;
case RADIOTYPE.TETRA:
case RADIOTYPE.REPEATER_TRBO:
//case RADIOTYPE.MOTO:
txCPS.Visible = false;
lbCps.Visible = false;
//tbGroupName.Size = new Size(247, tbGroupName.Size.Height);
break;
case RADIOTYPE.HYT:
this.Icon = global::SubscriberAndUserManager.Properties.Resources.SYTADMIN24x;
this.BackColor = MainForm.HyteraColor;
break;
case RADIOTYPE.HARRIS:
this.Icon = global::SubscriberAndUserManager.Properties.Resources.visionSmall;
this.BackColor = MainForm.HarrisColor;
this.lbCps.ForeColor = MainForm.HarTextColor;
this.lbGroupName.ForeColor = MainForm.HarTextColor;
this.lbGroups.ForeColor = MainForm.HarTextColor;
break;
case RADIOTYPE.ATLAS:
this.Icon = global::SubscriberAndUserManager.Properties.Resources.ATLASadmin32; //ATLASCHANGE
this.BackColor = MainForm.HarrisColor;
this.lbCps.ForeColor = MainForm.HarTextColor;
this.lbGroupName.ForeColor = MainForm.HarTextColor;
this.lbGroups.ForeColor = MainForm.HarTextColor;
break;
case RADIOTYPE.SIMOCO:
this.Icon = global::SubscriberAndUserManager.Properties.Resources.simoco_setup_241;
break;
case RADIOTYPE.EXCERA:
this.Icon = global::SubscriberAndUserManager.Properties.Resources.AXYS_ICON;
break;
}
this.Width = 393;
lbGWandRGW.Visible = cbGatewayAndRadioGW.Visible = (MainForm.radioType != RADIOTYPE.SIMOCO && MainForm.radioType != RADIOTYPE.EXCERA);
if (cbGroupType.Text.Equals((GroupType.CATEGORY.displayedName)))
{
lbGWandRGW.Visible = cbGatewayAndRadioGW.Visible = lbCps.Visible = txCPS.Visible = false;
txCPS.Value = 0;
}
//radioGWList = DBgateways.gelAllGatewaysAndRadioGateways();
//cbGatewayAndRadioGW.DataSource = radioGWList;
//cbGatewayAndRadioGW.DisplayMember = "name";
//if (cbGroupType.Text != GroupType.CATEGORY.ToString())
//{
// Int32 rgwid = ((Group)((RadListDataItem)listBoxGroups.SelectedItems[0]).Value).RgwID;
// if (radioGWList != null)
// {
// RadioGateway rg = radioGWList.Where(x => x.Id == rgwid).FirstOrDefault();
// cbGatewayAndRadioGW.SelectedValue = rg;
// lbGWandRGW.Visible = cbGatewayAndRadioGW.Visible = true;
// }
//}
//else
//{
// cbGatewayAndRadioGW.SelectedIndex = 0;
// lbGWandRGW.Visible = cbGatewayAndRadioGW.Visible = false;
//}
//listBoxGroups_SelectedIndexChanged(null, null);
GridViewGroupsList_SelectionChanged(null, null);
}
//groups
private void ShowGroups()
{
grps = DBgrp.GetAllGroups();
if (grps != null)
{
GridViewGroupsList.DataSource = grps;
//listBoxGroups.DataSource = grps;
//listBoxGroups.DisplayMember = "Name";
if (grps.Count() == 0)
EmptyFields();
groupBox1.Enabled = grps.Count() > 0;
}
}
private void setGatewayDropDown()
{
if(!cbGroupType.Text.Equals(GroupType.CATEGORY.displayedName)
&& action != "edit" )
{
txCPS.Value = 1;
}
if (!cbGroupType.Text.Equals(GroupType.MOBILETALK.displayedName))
{
cbGatewayAndRadioGW.Enabled = true;
return;
}
int count = 0;
foreach (var item in cbGatewayAndRadioGW.Items)
{
if (((RadioGateway)((RadListDataItem)item).Value).Type == (int)GatewayType.Broadband)
{
cbGatewayAndRadioGW.SelectedIndex = count;
cbGatewayAndRadioGW.Enabled = false;
}
count++;
}
}
private void AddNewGroup()
{
//foreach (RadListDataItem rdl in listBoxGroups.Items)
//{
// if ((int)txCPS.Value == ((Group)rdl.Value).CPS_Id && cbGroupType.Text != GroupType.CATEGORY.ToString())
// {
// CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("IDalreadyDefined"), MainForm.returnLNGString("err"));
// return;
// }
//}
sqlResponse resp;
string grpName = tbGroupName.Text;
if (grpName != "")
{
//int sipid = (Int32)txCPS.Value;
//if (DBcontact.isSipDuplicate(sipid) && cbGroupType.Text != GroupType.CATEGORY.ToString())
//{
// CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("IdAlreadyUsed"), MainForm.returnLNGString("err"));
// return;
//}
//if ((MainForm.radioType != RADIOTYPE.MOTO) && (MainForm.radioType != RADIOTYPE.ATLAS) && (MainForm.radioType != RADIOTYPE.TETRA) && (MainForm.radioType != RADIOTYPE.CONECTPLUS)) DBgrp.AddNewGroup(grpName, (Int32)txCPS.Value);
Int32 grpType = (GroupType.FromDisplayedName(cbGroupType.Text)).value;
Int32 rgwID = 0;
if (cbGatewayAndRadioGW.SelectedItems.Count > 0)
rgwID = ((RadioGateway)((RadListDataItem)cbGatewayAndRadioGW.SelectedItems[0]).Value).Id;
if ((MainForm.radioType != RADIOTYPE.ATLAS) && (MainForm.radioType != RADIOTYPE.CONECTPLUS) && (MainForm.radioType != RADIOTYPE.REPEATER_TRBO))
DBgrp.AddNewGroup(grpName, (Int32)txCPS.Value, grpType, rgwID, out resp);
else
DBgrp.AddNewGroup(grpName, 1, grpType, rgwID, out resp);
HandleResp(resp);
//MainForm.CallWebServer(MainForm.RestartSipLink);
}
else
{
//RadMessageBox.Show("Group name empty!!1one");
CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("grpnameemt"), MainForm.returnLNGString("err"));
}
//ShowGroups();
}
private void EditGroupName()
{
if (GridViewGroupsList.SelectedRows != null)
{
if (GridViewGroupsList.SelectedRows.Count > 0)
{
//foreach (RadListDataItem rdl in listBoxGroups.Items)
//{
// if ((int)txCPS.Value == ((Group)rdl.Value).CPS_Id && txID.Text != ((Group)rdl.Value).Id.ToString() && cbGroupType.Text != GroupType.CATEGORY.ToString())
// {
// CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("IDalreadyDefined"), MainForm.returnLNGString("err"));
// return;
// }
//}
//int grpID = ((Group)((RadListDataItem)listBoxGroups.SelectedItems[0]).Value).Id;//((Group)listBoxGroups.SelectedValue).Id;
int grpID = (int)GridViewGroupsList.SelectedRows[0].Cells["Id"].Value;
string grpName = tbGroupName.Text;
Int32 cps_id = 1;
try
{
cps_id = Convert.ToInt32(txCPS.Text);
}
catch (Exception ex)
{
SM.Debug("Error on convert cps_id:" + ex.ToString());
}
if (grpName != "")
{
sqlResponse resp;
//int sipid = (Int32)txCPS.Value;
//if (DBcontact.isSipDuplicate(sipid, (int)ContactType.GROUP, Convert.ToInt32(txID.Text)) && cbGroupType.Text != GroupType.CATEGORY.ToString())
//{
// CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("IdAlreadyUsed"), MainForm.returnLNGString("err"));
// return;
//}
Int32 rgwID = 0;
if (cbGatewayAndRadioGW.SelectedItems.Count > 0)
rgwID = ((RadioGateway)((RadListDataItem)cbGatewayAndRadioGW.SelectedItems[0]).Value).Id;
//if ((MainForm.radioType != RADIOTYPE.MOTO) && (MainForm.radioType != RADIOTYPE.ATLAS) && (MainForm.radioType != RADIOTYPE.TETRA) && (MainForm.radioType != RADIOTYPE.CONECTPLUS)) DBgrp.EditGroupName(grpID, grpName, cps_id);
if ((MainForm.radioType != RADIOTYPE.ATLAS) && (MainForm.radioType != RADIOTYPE.CONECTPLUS) && (MainForm.radioType != RADIOTYPE.REPEATER_TRBO))
DBgrp.EditGroupName(grpID, grpName, cps_id, rgwID, out resp);
else
DBgrp.EditGroupName(grpID, grpName, 0, rgwID, out resp);
//MainForm.CallWebServer(MainForm.RestartSipLink);
HandleResp(resp);
}
}
}
//ShowGroups();
}
private void HandleResp(sqlResponse resp)
{
switch (resp)
{
case sqlResponse.done:
//RadMessageBox.Show("Unit Added to Database", "Done!", MessageBoxButtons.OK, RadMessageIcon.Exclamation);
CustomMessageBox.Show(CustomMessageBoxType.check, MainForm.returnLNGString("gradd"), MainForm.returnLNGString("done"));
break;
case sqlResponse.noUpdate:
//RadMessageBox.Show("Unit Already in Database", "error!", MessageBoxButtons.OK, RadMessageIcon.Error);
CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("allin"), MainForm.returnLNGString("err"));
break;
case sqlResponse.SQLerror:
//RadMessageBox.Show("SQL error", "error!", MessageBoxButtons.OK, RadMessageIcon.Error);
CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("dberr"), MainForm.returnLNGString("err"));
break;
}
}
private void DeleteGroup()
{
if (GridViewGroupsList.SelectedRows.Count() > 0)
{
//int grpID = ((Group)((RadListDataItem)listBoxGroups.SelectedItems[0]).Value).Id;//((Group)listBoxGroups.SelectedValue).Id;
int grpID = (int)GridViewGroupsList.SelectedRows[0].Cells["Id"].Value;
DBgrp.DeleteGroup(grpID);
//MainForm.CallWebServer(MainForm.RestartSipLink);
}
//ShowGroups();
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
private void Save_Click(object sender, EventArgs e)
{
if (txCPS.Value == 0 && !cbGroupType.Text.Equals(GroupType.CATEGORY.displayedName))
{
CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("grpIDGT0"), MainForm.returnLNGString("err"));
return;
}
switch (action)
{
case "add":
ValidateGatewayForSimoco();
if (CheckCPSIDforGateway())
return;
AddNewGroup();
break;
case "edit":
ValidateGatewayForSimoco();
if (CheckCPSIDforGateway())
return;
EditGroupName();
break;
case "delete":
DeleteGroup();
break;
}
if (cbGroupType.Text.Equals(GroupType.MOBILETALK.displayedName))
((MainForm)parent.Parent.Parent).setVisibleSipRestartNotification();
action = "edit";
cbGroupType.Enabled = false;
ShowGroups();
}
private bool CheckCPSIDforGateway()
{
if (cbGroupType.Text.Equals(GroupType.CATEGORY.displayedName))
return false;
if(cbGatewayAndRadioGW.SelectedValue == null)
{
CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("assignGateway"), MainForm.returnLNGString("err"));
return true;
}
Int32 rgwid = ((RadioGateway)cbGatewayAndRadioGW.SelectedValue).Id;
string ID = txID.Text;
bool existsThisCpsIdOnSameGateway = grps.Where(x => x.CPS_Id == txCPS.Value && x.RgwID == rgwid && x.Id.ToString() != ID).Count() > 0;
if (existsThisCpsIdOnSameGateway)
{
CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("duplicateCpsID"), MainForm.returnLNGString("err"));
}
return existsThisCpsIdOnSameGateway;
}
private void ValidateGatewayForSimoco()
{
#region Disable SIP related features for Simoco
if (MainForm.radioType == RADIOTYPE.SIMOCO || MainForm.radioType == RADIOTYPE.EXCERA)
{
if (!cbGroupType.Text.Equals(GroupType.CATEGORY.displayedName))
{
if (cbGatewayAndRadioGW.Items.Count < 1)
{
CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("AddGatewayFirst"), MainForm.returnLNGString("err"));
return;
}
else
{
//it will be only one gateway
cbGatewayAndRadioGW.SelectedIndex = 0;
}
}
}
#endregion Disable SIP related features for Simoco
}
//private void listBoxGroups_SelectedIndexChanged(object sender, Telerik.WinControls.UI.Data.PositionChangedEventArgs e)
//{
// if (listBoxGroups.SelectedItem != null && action != "add")
// {
// tbGroupName.Text = ((Group)((RadListDataItem)listBoxGroups.SelectedItems[0]).Value).Name;
// txID.Text = ((Group)((RadListDataItem)listBoxGroups.SelectedItems[0]).Value).Id.ToString();
// Int32 type = ((Group)((RadListDataItem)listBoxGroups.SelectedItems[0]).Value).Type;
// cbGroupType.Text = ((GroupType)Enum.ToObject(typeof(GroupType), type)).ToString();
// if (cbGroupType.Text != GroupType.CATEGORY.ToString())
// {
// Int32 rgwid = ((Group)((RadListDataItem)listBoxGroups.SelectedItems[0]).Value).RgwID;
// if (radioGWList != null)
// {
// RadioGateway rg = radioGWList.Where(x => x.Id == rgwid).FirstOrDefault();
// cbGatewayAndRadioGW.SelectedValue = rg;
// lbGWandRGW.Visible = cbGatewayAndRadioGW.Visible = true;
// lbGWandRGW.Visible = cbGatewayAndRadioGW.Visible = MainForm.radioType != RADIOTYPE.SIMOCO;
// }
// }
// else
// {
// cbGatewayAndRadioGW.SelectedIndex = 0;
// lbGWandRGW.Visible = cbGatewayAndRadioGW.Visible = false;
// }
// //if ((MainForm.radioType != RADIOTYPE.MOTO) && (MainForm.radioType != RADIOTYPE.ATLAS) && (MainForm.radioType != RADIOTYPE.TETRA) && (MainForm.radioType != RADIOTYPE.CONECTPLUS)) txCPS.Value = ((Group)((RadListDataItem)listBoxGroups.SelectedItems[0]).Value).CPS_Id;
// if ((MainForm.radioType != RADIOTYPE.ATLAS) && (MainForm.radioType != RADIOTYPE.TETRA) && (MainForm.radioType != RADIOTYPE.CONECTPLUS) && (MainForm.radioType != RADIOTYPE.REPEATER_TRBO)) txCPS.Value = ((Group)((RadListDataItem)listBoxGroups.SelectedItems[0]).Value).CPS_Id;
// }
// if ((listBoxGroups.SelectedItem != null && action != "edit") || listBoxGroups.SelectedItem == null)
// {
// this.Width = 393;
// }
// else
// {
// if (action == "edit" && cbGroupType.Text != GroupType.MOBILETALK.ToString())
// {
// this.Width = 393;
// }
// else
// {
// this.Width = 743;
// Group grpSelected = (Group)listBoxGroups.SelectedItem.Value;
// //add current units for group
// showCurrentUnits(grpSelected.Id);
// //add units that ar not asigned
// showOtherUnits(grpSelected.Id);
// }
// }
// setGatewayDropDown();
//}
private void GroupsForm_FormClosed(object sender, FormClosedEventArgs e)
{
if (action != "add") parent.ShowVehs(controlUnit.isCheckboxChecked);
}
#region assigned units to group
private void btnRemoveUnitFromGroup_Click(object sender, EventArgs e)
{
//Group grpSelected = (Group)listBoxGroups.SelectedItem.Value;
int grpID = (int)GridViewGroupsList.SelectedRows[0].Cells["Id"].Value;
foreach (RadListDataItem tmp in listBoxCurrentMembers.SelectedItems)
{
Vehicles vehSelected = (Vehicles)tmp.Value;
if (vehSelected.Type == 0)
DBgrp.removeVehicleGroupConnection(vehSelected.Id.ToString(), grpID.ToString());
if (vehSelected.Type == 1)
DBgrp.removeUserGroupConnection(vehSelected.Id.ToString(), grpID.ToString());
}
showCurrentUnits(grpID);
showOtherUnits(grpID);
}
private void btnAddUnitToGroup_Click(object sender, EventArgs e)
{
//Group grpSelected = (Group)listBoxGroups.SelectedItem.Value;
int grpID = (int)GridViewGroupsList.SelectedRows[0].Cells["Id"].Value;
foreach (RadListDataItem tmp in listBoxOtherMembers.SelectedItems)
{
Vehicles vehSelected = (Vehicles)tmp.Value;
if (vehSelected.Type == 0)
DBgrp.addVehicleGroupConnection(vehSelected.Id.ToString(), grpID.ToString());
if (vehSelected.Type == 1)
DBgrp.addUserGroupConnection(vehSelected.Id.ToString(), grpID.ToString());
}
showCurrentUnits(grpID);
showOtherUnits(grpID);
}
//show current users for vehicle
private void showCurrentUnits(int grpID)
{
try
{
List<Vehicles> vehList = DBgrp.getAllUnitsAndDispatchersForCurrentGroup(grpID.ToString());
listBoxCurrentMembers.DataSource = vehList;
listBoxCurrentMembers.DisplayMember = "VehName";
lbAssignedMembers.Text = $"{MainForm.returnLNGString("assignmembers")} ({listBoxCurrentMembers.Items.Count})";
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
//show other users
private void showOtherUnits(int grpID)
{
try
{
List<Vehicles> vehList = DBgrp.getAllOtherUnitsAndDispatchersForCurrentGroup(grpID.ToString());
listBoxOtherMembers.DataSource = vehList;
listBoxOtherMembers.DisplayMember = "VehName";
lbUnassignedMembers.Text = $"{MainForm.returnLNGString("unassignmembers")} ({listBoxOtherMembers.Items.Count})";
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
private void showCurrentMobiles(int grpID)
{
try
{
List <Vehicles> grpList = DBgrp.getAllMobilesAssignedToRadioGroup(grpID);
listBoxCurrentGroups.DataSource = grpList;
listBoxCurrentGroups.DisplayMember = "VehName";
lbAssignedGroups.Text = $"{MainForm.returnLNGString("assignMobile")} ({listBoxCurrentGroups.Items.Count})";
CheckInsertIntoGroup();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
//show other users
private void showAvailableMobiles(int grpID)
{
try
{
List<Vehicles> grpList = DBgrp.getAllMobileAvailableFoRadioGroup();
listBoxOtherGroups.DataSource = grpList;
listBoxOtherGroups.DisplayMember = "VehName";
lbUnassignedGroups.Text = $"{MainForm.returnLNGString("unassignMobile")} ({listBoxOtherGroups.Items.Count})";
CheckInsertIntoGroup();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
private void showCurrentRadioTalk(int grpID)
{
try
{
List<Vehicles> grpList = DBgrp.getAllRadioTalkGroupsAssignedToMobileGroup(grpID);
listBoxCurrentGroups.DataSource = grpList;
listBoxCurrentGroups.DisplayMember = "VehName";
lbAssignedGroups.Text = $"{MainForm.returnLNGString("assignRadioTalk")} ({listBoxCurrentGroups.Items.Count})";
CheckInsertIntoGroup();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
//show other users
private void showAvailableRadioTalk(int grpID)
{
try
{
List<Vehicles> grpList = DBgrp.getAllRadioTalkGroupsAvailableForMobileGroup();
listBoxOtherGroups.DataSource = grpList;
listBoxOtherGroups.DisplayMember = "VehName";
lbUnassignedGroups.Text = $"{MainForm.returnLNGString("unassignRadioTalk")} ({listBoxOtherGroups.Items.Count})";
CheckInsertIntoGroup();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
private void listBoxUnits_VisualItemFormatting(object sender, VisualItemFormattingEventArgs e)
{
e.VisualItem.DrawFill = true;
e.VisualItem.NumberOfColors = 1;
if (e.VisualItem.Selected)
e.VisualItem.BackColor = MainForm.GridSelectedRow;
else
e.VisualItem.BackColor = Color.White;
}
private void listBoxOtherUnits_MouseDoubleClick(object sender, MouseEventArgs e)
{
RadListVisualItem clickedItem = listBoxOtherMembers.ElementTree.GetElementAtPoint(e.Location) as RadListVisualItem;
if (clickedItem != null)
{
RadListDataItem dataItem = clickedItem.Data;
btnAddUnitMember.PerformClick();
}
}
private void listBoxCurrentUnits_MouseDoubleClick(object sender, MouseEventArgs e)
{
RadListVisualItem clickedItem = listBoxCurrentMembers.ElementTree.GetElementAtPoint(e.Location) as RadListVisualItem;
if (clickedItem != null)
{
RadListDataItem dataItem = clickedItem.Data;
btnRemoveMember.PerformClick();
}
}
private Image dispatcherImage = Utils.ScaleImage(SubscriberAndUserManager.Properties.Resources.i_dispatch, 32, 32);
private Image groupImage = Utils.ScaleImage(SubscriberAndUserManager.Properties.Resources.i_group, 32, 32);
private void listBoxUnits_ItemDataBound(object sender, ListItemDataBoundEventArgs args)
{
Vehicles view = (Vehicles)args.NewItem.DataBoundItem;
args.NewItem.Text = "<html>" +
"<b>" + view.VehName + "</b>";
if (view.Type == (int)ContactType.USER)
args.NewItem.Image = dispatcherImage;
if (view.Type == (int)ContactType.GROUP)
args.NewItem.Image = groupImage;
if (MainForm.carImages.ContainsKey(view.ImgID))
args.NewItem.Image = MainForm.carImages[view.ImgID];
}
#endregion
//private void cbGroupType_SelectedIndexChanged(object sender, Telerik.WinControls.UI.Data.PositionChangedEventArgs e)
//{
//}
private void cbGroupType_TextChanged(object sender, EventArgs e)
{
lbGWandRGW.Visible = cbGatewayAndRadioGW.Visible = lbCps.Visible = txCPS.Visible = !(cbGroupType.Text.Equals(GroupType.CATEGORY.displayedName));
if (action != "edit")
{
if (cbGroupType.Text.Equals(GroupType.CATEGORY.displayedName))
txCPS.Value = 0;
else
txCPS.Value = 1;
}
if (radioGWList == null)
radioGWList = DBgateways.gelAllGatewaysAndRadioGateways();
if (radioGWList != null)
{
//cbGatewayAndRadioGW.Items.Clear();
cbGatewayAndRadioGW.DataSource = null;
if (cbGroupType.Text.Equals(GroupType.MOBILETALK.displayedName))
cbGatewayAndRadioGW.DataSource = radioGWList.Where(x => x.Type == (int)GatewayType.Broadband);
else if (cbGroupType.Text.Equals(GroupType.RADIOTALK.displayedName))
cbGatewayAndRadioGW.DataSource = radioGWList.Where(x => x.Type == (int)GatewayType.Tier2Radio || x.Type == (int)GatewayType.Tier3Radio
|| x.Type == (int)GatewayType.SMCBridge);
cbGatewayAndRadioGW.DisplayMember = "name";
if (!cbGroupType.Text.Equals(GroupType.CATEGORY.displayedName))
{
if (GridViewGroupsList.SelectedRows.Count > 0)
{
int rgwid = (int)GridViewGroupsList.SelectedRows[0].Cells["RgwID"].Value;
//Int32 rgwid = ((Group)((RadListDataItem)listBoxGroups.SelectedItems[0]).Value).RgwID;
if (radioGWList != null)
{
RadioGateway rg = radioGWList.Where(x => x.Id == rgwid).FirstOrDefault();
cbGatewayAndRadioGW.SelectedValue = rg;
lbGWandRGW.Visible = cbGatewayAndRadioGW.Visible = true;
}
}
}
else
{
cbGatewayAndRadioGW.SelectedIndex = 0;
lbGWandRGW.Visible = cbGatewayAndRadioGW.Visible = false;
}
}
#region Disable SIP related features for Simoco
if (MainForm.radioType == RADIOTYPE.SIMOCO || MainForm.radioType == RADIOTYPE.EXCERA)
{
lbGWandRGW.Visible = cbGatewayAndRadioGW.Visible = false;
}
#endregion
}
private void listBoxCurrentUnits_CreatingVisualListItem(object sender, CreatingVisualListItemEventArgs args)
{
RadListVisualItem visualItem = new RadListVisualItem();
visualItem.Padding = new Padding(5, 5, 0, 5);
args.VisualItem = visualItem;
}
private void listBoxOtherUnits_CreatingVisualListItem(object sender, CreatingVisualListItemEventArgs args)
{
RadListVisualItem visualItem = new RadListVisualItem();
visualItem.Padding = new Padding(5, 5, 0, 5);
args.VisualItem = visualItem;
}
private void cbGroupType_SelectedIndexChanged(object sender, Telerik.WinControls.UI.Data.PositionChangedEventArgs e)
{
setGatewayDropDown();
}
private void GridViewGroupsList_CellFormatting(object sender, CellFormattingEventArgs e)
{
int value;
if (e.CellElement.ColumnInfo.Name == "CPS_Id" && e.CellElement.Text == "0")
{
e.CellElement.Text = "";
}
if (e.CellElement.ColumnInfo.Name == "Type" && Int32.TryParse(e.CellElement.Text, out value))
{
try
{
e.CellElement.Text = (GroupType.FromValue(value)).displayedName;
}
catch(Exception ex)
{
Utils.WriteLine(ex.ToString(), ConsoleColor.Red);
}
}
else if (e.CellElement is GridImageCellElement && e.CellElement.ColumnInfo.Name == "delete")
{
if (e.Row.IsSelected)
e.CellElement.BackgroundImage = Properties.Resources.trashmic1;
else
e.CellElement.BackgroundImage = null;
}
}
private void GridViewGroupsList_CellClick(object sender, GridViewCellEventArgs e)
{
//delete group
if (e.Column.Name == "delete" && e.RowIndex != -1)
{
Utils.WriteLine("Nr of rows : " + GridViewGroupsList.RowCount);
int grpID = (int)GridViewGroupsList.SelectedRows[0].Cells["Id"].Value;
string grpName = (string)GridViewGroupsList.SelectedRows[0].Cells["Name"].Value;
string msg = string.Format(MainForm.returnLNGString("aredelgrp"), grpName);
DialogResult dr2 = RadMessageBox.Show(msg, MainForm.returnLNGString("delgrp")
, MessageBoxButtons.YesNo, RadMessageIcon.Exclamation);
if (dr2 == DialogResult.Yes)
{
DBgrp.DeleteGroup(grpID);
ShowGroups();
}
}
}
private void pbAddGroup_Click(object sender, EventArgs e)
{
this.Width = 393;
cbGroupType.Enabled = true;
action = "add";
groupBox1.Enabled = true;
EmptyFields();
}
private void EmptyFields()
{
tbGroupName.Text = "";
txID.Text = "";
txCPS.Value = 0;
cbGroupType.Text = GroupType.CATEGORY.displayedName;
}
private void pbAddGroup_MouseEnter(object sender, EventArgs e)
{
DisplayToolTip();
}
private void pbAddGroup_MouseHover(object sender, EventArgs e)
{
DisplayToolTip();
}
private void pbAddGroup_MouseLeave(object sender, EventArgs e)
{
toolTipAddGroup.Hide(pbAddGroup);
}
private void DisplayToolTip()
{
String hint = MainForm.returnLNGString("toolTipGroups1") + Environment.NewLine +
MainForm.returnLNGString("toolTipGroups2");
toolTipAddGroup.Show(hint, pbAddGroup, 150000);
}
private void GridViewGroupsList_SelectionChanged(object sender, EventArgs e)
{
action = "edit";
if (GridViewGroupsList.SelectedRows.Count() > 0 && action != "add")
{
tbGroupName.Text = (string)GridViewGroupsList.SelectedRows[0].Cells["Name"].Value;
txID.Text = GridViewGroupsList.SelectedRows[0].Cells["Id"].Value.ToString();
cbGroupType.Text = ((GroupType.FromValue((int)GridViewGroupsList.SelectedRows[0].Cells["Type"].Value)).displayedName);
if (!cbGroupType.Text.Equals(GroupType.CATEGORY.displayedName))
{
//Int32 rgwid = ((Group)((RadListDataItem)listBoxGroups.SelectedItems[0]).Value).RgwID;
int rgwid = (int)GridViewGroupsList.SelectedRows[0].Cells["RgwID"].Value;
if (radioGWList != null)
{
RadioGateway rg = radioGWList.Where(x => x.Id == rgwid).FirstOrDefault();
cbGatewayAndRadioGW.SelectedValue = rg;
lbGWandRGW.Visible = cbGatewayAndRadioGW.Visible = true;
lbGWandRGW.Visible = cbGatewayAndRadioGW.Visible = (MainForm.radioType != RADIOTYPE.SIMOCO && MainForm.radioType != RADIOTYPE.EXCERA);
}
}
else
{
cbGatewayAndRadioGW.SelectedIndex = 0;
lbGWandRGW.Visible = cbGatewayAndRadioGW.Visible = false;
}
//if ((MainForm.radioType != RADIOTYPE.MOTO) && (MainForm.radioType != RADIOTYPE.ATLAS) && (MainForm.radioType != RADIOTYPE.TETRA) && (MainForm.radioType != RADIOTYPE.CONECTPLUS)) txCPS.Value = ((Group)((RadListDataItem)listBoxGroups.SelectedItems[0]).Value).CPS_Id;
if ((MainForm.radioType != RADIOTYPE.ATLAS) && (MainForm.radioType != RADIOTYPE.TETRA) && (MainForm.radioType != RADIOTYPE.CONECTPLUS) && (MainForm.radioType != RADIOTYPE.REPEATER_TRBO))
txCPS.Value = (int)GridViewGroupsList.SelectedRows[0].Cells["CPS_Id"].Value;
}
if ((GridViewGroupsList.SelectedRows.Count() > 0 && action != "edit") || GridViewGroupsList.SelectedRows == null)
{
this.Width = 393;
}
else
{
if (action == "edit" && !cbGroupType.Text.Equals(GroupType.MOBILETALK.displayedName))
{
if (cbGroupType.Text.Equals(GroupType.RADIOTALK.displayedName)
&& MainForm.radioType == RADIOTYPE.LINXB)
{
int grpID = (int)GridViewGroupsList.SelectedRows[0].Cells["Id"].Value;
radPageMembers.Item.Visibility = ElementVisibility.Collapsed;
radPageAssigned.SelectedPage = radPageRadioTalk;
radPageRadioTalk.Text = MainForm.returnLNGString("linkMobileTalk");
showCurrentMobiles(grpID);
showAvailableMobiles(grpID);
this.Width = 743;
}
else
this.Width = 393;
}
else
{
this.Width = 743;
radPageMembers.Item.Visibility = ElementVisibility.Visible;
if(MainForm.radioType != RADIOTYPE.LINXB)
radPageRadioTalk.Item.Visibility = ElementVisibility.Collapsed;
radPageAssigned.SelectedPage = radPageMembers;
int grpID = (int)GridViewGroupsList.SelectedRows[0].Cells["Id"].Value;
//add current units for group
showCurrentUnits(grpID);
//add units that ar not asigned
showOtherUnits(grpID);
//add current units for group
radPageRadioTalk.Text = MainForm.returnLNGString("linkRadioTalk");
showCurrentRadioTalk(grpID);
//add units that ar not asigned
showAvailableRadioTalk(grpID);
}
}
setGatewayDropDown();
}
private void btnAddGroup_Click(object sender, EventArgs e)
{
int grpID = (int)GridViewGroupsList.SelectedRows[0].Cells["Id"].Value;
int type = (int)GridViewGroupsList.SelectedRows[0].Cells["Type"].Value;
if (type == GroupType.MOBILETALK.value)
{
foreach (RadListDataItem tmp in listBoxOtherGroups.SelectedItems)
{
Vehicles vehSelected = (Vehicles)tmp.Value;
if (vehSelected.Type == (int)ContactType.GROUP)
DBgrp.addRadioMobileConnection(vehSelected.Id.ToString(), grpID.ToString());
}
showCurrentRadioTalk(grpID);
showAvailableRadioTalk(grpID);
}
if (type == GroupType.RADIOTALK.value)
{
DBgrp.cleanRadioTalkConnection(grpID.ToString());
foreach (RadListDataItem tmp in listBoxOtherGroups.SelectedItems)
{
Vehicles vehSelected = (Vehicles)tmp.Value;
if (vehSelected.Type == (int)ContactType.GROUP)
DBgrp.addRadioMobileConnection(grpID.ToString(),vehSelected.Id.ToString());
else if (vehSelected.Type == (int)ContactType.UNIT)
DBgrp.addVehicleGroupConnection(vehSelected.Id.ToString(), grpID.ToString());
}
showCurrentMobiles(grpID);
showAvailableMobiles(grpID);
}
}
private void btnRemoveGroup_Click(object sender, EventArgs e)
{
//Group grpSelected = (Group)listBoxGroups.SelectedItem.Value;
int grpID = (int)GridViewGroupsList.SelectedRows[0].Cells["Id"].Value;
int type = (int)GridViewGroupsList.SelectedRows[0].Cells["Type"].Value;
if (type == GroupType.MOBILETALK.value)
{
foreach (RadListDataItem tmp in listBoxCurrentGroups.SelectedItems)
{
Vehicles vehSelected = (Vehicles)tmp.Value;
if (vehSelected.Type == (int)ContactType.GROUP)
DBgrp.removeRadioMobileConnection(vehSelected.Id.ToString(), grpID.ToString());
}
showCurrentRadioTalk(grpID);
showAvailableRadioTalk(grpID);
}
if (type == GroupType.RADIOTALK.value)
{
foreach (RadListDataItem tmp in listBoxCurrentGroups.SelectedItems)
{
Vehicles vehSelected = (Vehicles)tmp.Value;
if (vehSelected.Type == (int)ContactType.GROUP)
DBgrp.removeRadioMobileConnection(grpID.ToString(), vehSelected.Id.ToString());
else if (vehSelected.Type == (int)ContactType.UNIT)
DBgrp.removeUserGroupConnection(vehSelected.Id.ToString(), grpID.ToString());
}
showCurrentMobiles(grpID);
showAvailableMobiles(grpID);
}
}
private void CheckInsertIntoGroup()
{
btnAddGroup.Enabled = listBoxCurrentGroups.Items.Count() == 0;
}
}
}