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:
…
class View1 : IView
{
public int id { get; set; }
public string name { get; set; }
public View1()
{
id = 1;
name = "Adresa žadatele";
}
}
…
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.
Příklad:
…
class View1: 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 sectionId; // id sluzby, ve ktere je pozadavek
string state; // stav pozadavku
string requesterAddress; // adresa zadatele (podle organizace)
string solverAddress; // adresa resitele (podle organizace)
using (SqlDataReader ticketReader = Cmd.ExecuteReader())
{
if (ticketReader.Read())
{
sectionId = int.Parse((ticketReader["liHdTicketHdSectionId"]).ToString());
state = (ticketReader["sHdTicketStateNotice"]).ToString();
requesterAddress = (ticketReader["adresa_zadatele"]).ToString();
}
else
{
return url;
}
}
// kontrola jestli je pozadavek v pozadovane sluzbe, ve stavu “Osobni jednani s zadatelem”
if (sectionId == 2 && state == "Osobní jednání s žadatelem")
{
// vracene url zobrazi ve vlastni zalozce trasu v mape z adresy resitele na adresu zadatele
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;
}
}
…
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;
Nenašli jste co jste hledali? Zeptejte se našeho týmu technické podpory.
|