Skip Navigation LinksALVAO 10.1ALVAO Service DeskImplementace systému v organizaciVlastní úpravy a rozšířeníVlastní programová rozšířeníVlastní záložky v detailu požadavku Skip Navigation Links. Skip Navigation Links Skip Navigation Links.


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.
Tip:
Předpokladem pro vytvoření funkční záložky je dobrá znalost databáze ALVAO a rozhraní Service Desk WebService.

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.