Vlastní záložky v detailu požadavku
Vlastní záložky lze použít pro zobrazení vlastního obsahu v detailu
požadavku. Může jít o vlastní formulář v rámci Service Desk WebApp, nebo např.
externí parametrizovaný odkaz.
Upozornění:
Špatnou definicí vlastní záložky může být nenávratně poškozena databáze
ALVAO, proto vytváření a testování vždy provádějte na kopii databáze v
testovacím prostředí.
Upozornění:
V záložkách nelze zobrazit stránky, které mají zakázáno zobrazení v rámci.
Ani v konzoli ani ve WebApp.
Příprava nové vlastní záložky
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
obsahu, který záložka zobrazuje.
V nově vytvořeném souboru do ohraničeného bloku kódu zadejte definici nové
záložky implementací rozhraní IView a v konstruktoru třídy příkazu nastavte
hodnoty vlastností id a name.
- id – číslo záložky (jedinečné)
- name – název záložky, který se bude zobrazovat v aplikacích
Příklad
Pokud se nachází požadavek ve službě a stavu
definovaném v níže popsané třídě, zobrazí se v
detailu požadavku záložka s adresou žadatele
(podle organizace) v mapě.
1. část příkladu:
…
class ShowRequesterAddress : IView
{
public int id { get; set; }
public string name { get; set; }
public ShowRequesterAddress()
{
id = 1;
name = "Adresa žadatele";
}
int sectionId = 1; // ID služby, pro jejíž požadavky chceme, aby se záložka
zobrazila
string stateName = "Osobní jednání s žadatelem"; // Název stavu, ve kterém
musí požadavek být, aby se záložka zobrazila
}
…
Definice podmínek pro zobrazení obsahu vlastní záložky
Ve vytvořené třídě záložky implementujte metodu Show
z rozhraní IView. Vstupními parametry jsou
ticketId (číslo požadavku) a personId (id
osoby, které by se měla záložka zobrazit).
Výstupem je potom textový řetězec obsahující URL k zobrazení na vlastní
záložce. Pokud je URL prázdné, tak se záložka uživateli nezobrazuje.
2. část příkladu:
…
class ShowRequesterAddress : IView
{
…
public string Show(SqlConnection Con, SqlTransaction Trans, int ticketId, int
personId)
{
string url = "";
// nacteni potrebnych dat o pozadavku z databaze
using (SqlCommand Cmd = new SqlCommand(@"
SELECT
ZAA.Street + ' ' + ZAA.City adresa_zadatele,
liHdTicketHdSectionId,
sHdTicketStateNotice
FROM
tHdTicket HDT
JOIN tPerson Z on Z.iPersonId = HDT.liHdTicketUserPersonId
JOIN tAccount ZA ON Z.liAccountId = ZA.iAccountId
JOIN tAddress ZAA ON ZAA.id = ZA.AddressId
WHERE
HDT.iHdTicketId = @iHdTicketId", Con, Trans))
{
Cmd.Parameters.Add("@iHdTicketId", SqlDbType.Int).Value = ticketId;
Cmd.Parameters.Add("@iPersonId", SqlDbType.Int).Value = personId;
int section; // id sluzby, ve ktere je pozadavek
string state; // stav pozadavku
string requesterAddress; // adresa zadatele (podle organizace)
using (SqlDataReader ticketReader = Cmd.ExecuteReader())
{
if (ticketReader.Read())
{
section = int.Parse((ticketReader["liHdTicketHdSectionId"]).ToString());
state = (ticketReader["sHdTicketStateNotice"]).ToString();
requesterAddress = (ticketReader["adresa_zadatele"]).ToString();
}
else
{
return url;
}
ticketReader.Close();
}
// kontrola jestli je pozadavek v pozadovane sluzbe a stavu
if (section == sectionId && state == stateName)
{
// vracene url zobrazi ve vlastni zalozce adresu zadatele na mape
WebClient APIClient = new WebClient();
var SAPI = new Uri(HttpUtility.UrlPathEncode("http://api.mapy.cz/geocode?query="
+ requesterAddress));
APIClient.Encoding = System.Text.Encoding.UTF8;
string XMLresponse = APIClient.DownloadString(SAPI);
XmlDocument APIresponse = new XmlDocument();
APIresponse.LoadXml(XMLresponse);
var APIitems = APIresponse.GetElementsByTagName("item");
if (APIitems.Count >= 1)
{
var Atributes = APIitems.Item(0).Attributes;
var Query = new StringBuilder("q=");
Query.Append(requesterAddress);
foreach (XmlAttribute Atribute in Atributes)
{
Query.Append('&');
Query.Append(Atribute.Name);
Query.Append('=');
Query.Append(Atribute.Value);
}
url = HttpUtility.UrlPathEncode("http://mapy.cz/zakladni?" +
Query.ToString());
}
return url;
}
}
return null;
}
…
}
…
Celý příklad je ke stažení zde.
Poznámka:
V příkladu se pracuje se třídami, jejichž knihovny nejsou součástí výchozího
souboru CodeExtension_Template.cs. Jde o třídy WebClient, XmlDocument a
StringBuilder. Pro funkčnost příkladu doplňte na začátek souboru tyto
knihovny:
using System.Net;
using System.Xml;
using System.Text;
Tip:
Pokud má vlastní záložka zobrazit 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.
|