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í stránku v ALVAO 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 iframe.
Příprava nové vlastní záložky
V aplikaci vytvořte nový skript podle šablony IView a vhodně jej pojmenujte podle obsahu, který záložka zobrazuje.
V nově vytvořeném skriptu nastavte v konstruktoru třídy příkazu 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
Pro uložení vlastností a nastavení záložky doporučujeme definovat třídu Settings v samostatném skriptu, který vytvoříte ze šablony Knihovna tříd, např.:
class Settings {
public const string ViewName = "Zobrazení adresy žadatele";
public const int ServiceId = 154; // ID služby, pro jejíž požadavky chceme, aby se záložka zobrazila
public const int StateId = 94; // ID stavu, ve kterém musí požadavek být, aby se záložka zobrazila
}
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 = Settings.ViewName;
}
}
…
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,
TicketStateId
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
int stateId; // id stavu pozadavku
string requesterAddress; // adresa zadatele (podle organizace)
using (SqlDataReader ticketReader = Cmd.ExecuteReader())
{
if (ticketReader.Read())
{
section = int.Parse((ticketReader["liHdTicketHdSectionId"]).ToString());
stateId = int.Parse((ticketReader["TicketStateId"]).ToString());
requesterAddress = (ticketReader["adresa_zadatele"]).ToString();
}
else
{
return url;
}
ticketReader.Close();
}
// kontrola jestli je pozadavek v pozadovane sluzbe a stavu
if (section == Settings.ServiceId && stateId == Settings.StateId)
{
// 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://frame.mapy.cz/zakladni?" +
Query.ToString());
}
return url;
}
}
return null;
}
…
}
…
Celý příklad ke stažení: Example_ShowRequesterAddress.zip
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 vlastnost Alvao.API.Common.DbProperty.WebAppUrl z rozhraní Alvao.API.
Nenašli jste co jste hledali? Zeptejte se našeho týmu technické podpory.
|