Vlastní příkazy v hlavní nabídce
Umístěním příkazu do hlavní nabídky můžete uživatelům zpřístupnit často
používané stránky a operace, které nejsou vázané na konkrétní požadavek v ALVAO
Service Desk.
Příkazy se zobrazují v hlavní nabídce aplikace Service Desk Console a ALVAO
WebApp.
Příprava nového příkazu
Ve složce s nainstalovanou ALVAO Service Desk WebService zkopírujte v
adresáři App_Code soubor CodeExtension_Template.cs a vhodně jej pojmenujte podle
funkčnosti vlastního příkazu.
V nově vytvořeném souboru do ohraničeného bloku kódu zadejte definici nového
příkazu implementací rozhraní IGeneralCommand a v konstruktoru třídy příkazu
nastavte hodnoty vlastností id, name a position.
- id – číslo příkazu (jedinečné)
- name – název příkazu, který se bude zobrazovat v aplikacích
- position – pozice, na které se bude příkaz zobrazovat v aplikacích
- 1 = na prvním místě hlavní nabídky aplikace
- 2 = na posledním místě hlavní nabídky aplikace
- 3 = na prvním místě nabídky uživatele v hlavní nabídce aplikace
- 4 = na posledním místě nabídky uživatele v hlavní nabídce aplikace
Příklad:
…
class ProblemReporting : IGeneralCommand
{
CommandDesc commandDesc;
public CommandDesc CommandDesc
{
get { return commandDesc;
}
set { commandDesc = value;
}
}
public ProblemReporting()
{
int id = 1;
string name = "Nahlásit
problém";
int position = 1;
commandDesc = new
CommandDesc(id, name, position);
}
int idSectionForProblems = 1; // id sekce pro hlášení
problémů
}
…
Definice podmínek zobrazení příkazu
Ve vytvořené třídě příkazu implementujte metodu Show z rozhraní
IGeneralCommand. Vstupní parametr personId obsahuje id osoby, které by se měl
příkaz zobrazit.
Výstupem je potom pravdivostní hodnota, zda se má příkaz uživateli zobrazit v
hlavní nabídce aplikace.
Tip:
Voláním této metody v metodě Run(…) lze před spuštěním příkazu kontrolovat,
jestli se nezměnily podmínky pro jeho zobrazení v době mezi zobrazením a
spuštěním příkazu.
Příklad:
…
class ProblemReporting : IGeneralCommand
{
…
public bool Show(SqlConnection Con, int personId)
{
bool show = false;
bool isRequester = false;
bool isOperator = false;
// kontrola, jestli je uživatel ve skupině
Žadatelé
using (SqlCommand Cmd = new
SqlCommand(@"SELECT CAST(1 AS bit) FROM tRolePerson WHERE liRolePersonRoleId = 7
AND liRolePersonPersonId = @personId", Con))
{
Cmd.Parameters.Add("@personId", SqlDbType.Int).Value = personId;
isRequester =
Cmd.ExecuteScalar() as bool? ?? false;
}
// kontrola, jestli je uživatel ve skupině
Operátoři
using (SqlCommand Cmd = new
SqlCommand(@"SELECT CAST(1 AS bit) FROM tRolePerson WHERE liRolePersonRoleId = 9
AND liRolePersonPersonId = @personId", Con))
{
Cmd.Parameters.Add("@personId", SqlDbType.Int).Value = personId;
isOperator = Cmd.ExecuteScalar() as bool? ?? false;
}
// pokud je uživatel žadatel a není
operátor, tak se příkaz zobrazí
if (isRequester && !isOperator)
show = true;
return show;
}
…
}
…
Definice akcí prováděných příkazem
Ve vytvořené třídě příkazu implementujte metodu Run z rozhraní
IGeneralCommand. Vstupní parametr personId obsahuje id osoby, která příkaz
spouští.
Výstupem je pravdivostní hodnota o úspěchu provedení, text, který se může
zobrazit v hlášení pro uživatele a URL k otevření v prohlížeči.
Příklad:
…
class ProblemReporting : IGeneralCommand
{
…
public Tuple<bool, string, string> Run(SqlConnection Con, int
personId)
{
bool complete = false;
string message = "";
string url = "";
// Kontrola jestli se mezi zobrazením a
spuštěním příkazu nezměnily podmínky pro jeho spuštění/zobrazení (lze provést
kdekoliv v této metodě Run).
if (!Show(Con, personId))
{
message = "Příkaz nelze
provést, protože nejsou splněny podmínky pro jeho zobrazení.";
complete = false;
return
Tuple.Create(complete, message, url);
}
// Zjištění adresy WA
HelpdeskWebService sdws = new
HelpdeskWebService();
string waUrl =
sdws.GetServiceDeskPortalUrl();
if (!string.IsNullOrEmpty(waUrl))
{
// Část katalogu služeb
pro hlášení problémů
string problems =
"/NewTicket/SectionCatalog/" + idSectionForProblems;
url = waUrl + problems;
complete = true;
}
else
{
message = "Příkaz nelze
provést, protože v systému ALVAO chybí nastavení URL k aplikaci WebApp.
Kontaktujte prosím administrátora systému ALVAO.";
complete = false;
}
return Tuple.Create(complete, message,
url);
}
…
}
…
Tip:
Pokud má vlastní příkaz otevřít jinou stránku z ALVAO WebApp, pro zjištění
kořenové URL WebApp použijte metodu z rozhraní Service Desk Web Service
GetServiceDeskPortalUrl(). Např.:
string waUrl = "";
using(HelpdeskWebService ws = new HelpdeskWebService())
{
waUrl = ws.GetServiceDeskPortalUrl();
}
if (waUrl.Length == 0)
throw new Exception("Adresa WebApp není nastavena.");
Nenašli jste co jste hledali? Zeptejte se našeho týmu technické podpory.
|