Skip Navigation LinksALVAO 10.4Release NotesUpgrade z předchozích verzíPřevod vlastních formulářů a rozšíření z ALVAO 10.3 Skip Navigation Links.


Převod vlastních formulářů a rozšíření z ALVAO 10.3

Při upgrade z verze ALVAO 10.3 je třeba upravit existující vlastní formuláře a rozšíření. Zdrojové soubory upravte podle postupu uvedeného na této stránce. Pokud upgradujete z verze ALVAO 10.2 nebo starší, nejprve vlastní formuláře převeďte na verzi ALVAO 10.3.

  1. Doporučujeme převést vaše stávající úpravy ze složky App_Code v instalaci SD WS do nové agendy Aplikace podle následujícího postupu:
    1. V sekci Správa – Aplikace vytvořte vhodnou strukturu aplikací.
      Poznámka:
      Aplikace jsou součástí modulu ALVAO Service Desk Custom Apps.
    2. V aplikaci vytvořte pro každý přenášený soubor nový skript s šablonou:
      • Prázdná, pokud přenášíte soubor s implementací jednoho z typů rozšíření (např. soubor obsahující třídu implementující ITicketAutoAction).
      • Knihovna tříd, pokud přenášíte soubor s pomocnými třídami (např. soubor Settings obsahující názvy služeb používané v rozšířeních).
    3. Do skriptu vložte obsah přenášeného souboru.
    4. Na začátek skriptu přidejte:
      using Alvao.Apps.API;
      using Alvao.Apps.WebService;
      a odstraňte
      using System.Web.WebServices;
    5. V automatických akcích nahraďte interface IAutoAction za ITicketAutoAction.
    6. Instance třídy HelpdeskWebService nesmí být uvnitř konstruktu using, např.:
      using(HelpdeskWebService ws = new HelpdeskWebService())
      {
         waUrl = ws.GetServiceDeskPortalUrl();
      }
      nahraďte za:
      HelpdeskWebService ws = new HelpdeskWebService()
      waUrl = ws.GetServiceDeskPortalUrl();
    7. Metodu SendMail nahraďte vhodnou metodou z Alvao.API.
  2. Vlastní rozšíření ponechaná ve složce App_Code upravte podle následujícho postupu:
    • Na začátek každého souboru vložte using Alvao.Apps.API;.
    • Viz krok 1.5 výše.
  3. Vlastní programová rozšíření – používáte-li sloupec tHdTicket.sHdTicketStateNotice ve svých vlastních rozšířeních, je potřeba jej změnit na tHdTicket.TicketStateId. Zároveň je potřeba změnit také typ proměnné, do které se stav ukládá, a to ze string (textový řetězec) na int (číslo). ID konkrétního stavu lze v aplikaci velmi jednoduše vyčíst např. z URL při úpravě stavu ve Správě. (T75510ALVAO)
  4. SD WS - ReadColumn – Změnily se parametry metody pro zjištění názvu stavu požadavku. Místo tHdTicket (table) a sHdTicketStateNotice (column) použijte parametry TicketForeignKeyInfo (table) a StateName (column). Funkcionalita je dostupná od verze 10.4/SP1 (15.9.2021).
  5. V knihovně Alvao.API byla třída Alvao.API.SD.Email přejmenována na Alvao.API.SD.Message a výčet API.Common.PersonRights.TicketRole na API.Common.PersonRights.TicketRoles. Aktualizujte použití ve svých zdrojových kódech.
  6. SD WS – CreateTicket – do metody přibyl nový volitelný parametr requestedForPersonId, který souvisí s možností založit požadavek za jiného uživatele. Přestože je tento parametr volitelný, je nutné doplnit buď hodnotu 0 nebo null.
  7. Vlastní dotazníky spokojenosti – Upravený kód najdete v šabloně dotazníku spokojenosti (Templates\Feedback\Code\Feedback.cs).

    Na začátek metody ConfigControls doplňte:
       var lastEvaluatedPersonId = GetLastPersonFilled(ticket.iHdTicketId);
       var evaluatedBySomeoneElse = (PersonPrincipal.CurrentPersonId != lastEvaluatedPersonId) && lastEvaluatedPersonId.HasValue ? true : false;

    Na konec sekce přiřazování hodnot do Viewbagů v ConfigControls doplňte:
       ViewBag.PersonIsDifferent = evaluatedBySomeoneElse;

    Řádek:
       if (ViewBag.FeedbackGeneral == "satisfied")
    Nahraďte za:
       if (ViewBag.FeedbackGeneral == "satisfied" && !evaluatedBySomeoneElse)

    Řádek:
       else if (ViewBag.FeedbackGeneral == "unsatisfied")
    Nahraďte za:
       else if (ViewBag.FeedbackGeneral == "unsatisfied" && !evaluatedBySomeoneElse)

    Kdekoliv dolů v kódu doplňte novou metodu:
    private int? GetLastPersonFilled(int ticketId)
    {
       using (ScopeInfo scope = ConnectionScope.Get())
       {
         return scope.Connection.Query<int?>(@"
          SELECT TOP 1 PersonId FROM TicketChange TC
          JOIN tHdTicket T ON T.iHdTicketId=TC.TicketId
          WHERE TC.TicketId=@ticketId AND CAST(T.FeedbackGeneral as nvarchar(MAX)) IN (TC.ValueOld, TC.ValueNew)
          ORDER BY TC.id DESC",
         new { ticketId }, transaction: scope.Transaction).FirstOrDefault();
       }
    }
  8. Vlastní dotazník spokojenosti
    Starý kód:
    Models.Database.TicketChange tChange = new TicketChange()
    {
       TicketId = ticketId,
       PersonId = personId,
       ChangeDate = DateTime.UtcNow,
       ColumnId = ColumnId,
       ValueOld = ValueOld != null ? ValueOld.ToString() : null,
       ValueNew = (ValueNew.ToString() ?? "").ToString()
    };
    scope.Connection.Insert<Models.Database.TicketChange>(tChange, transaction: scope.Transaction);


    Nahraďte za:
    API.SD.Ticket.NewTicketChange(ticketId, personId, "", "", ValueOld, ValueNew, ColumnId);
  9. WA - Vlastní formuláře - Používáte-li obrázky jako ikony příkazů v jejich definici nahraďte následující kód:
    VirtualPathUtility.ToAbsolute("<cesta k obrázku>")
    v případě vlastního obrázku za:
    new CommandIcon(VirtualPathUtility.ToAbsolute("<cesta k obrázku>"))
    v případě systémového obrázku za:
    new CommandIcon(null, "<název odpovídající ikony z https://uifabricicons.azurewebsites.net>")
  10. API.SD.Ticket - v metodě "Remove" byl parametr "ignoreRights" typu bool změněn na parametr "flags" typu "RemoveFlags", který symbolizuje příznak při odstranění. Parametr může nabývat hodnot:
       Ticket.RemoveFlags.None (bez příznaků - výchozí hodnota),
       Ticket.RemoveFlags.IgnoreRights (ignorování práv pro odstranění ticketu),
       Ticket.RemoveFlags.DontCallChangeState (neměnit stav požadavku, pouze pro interní použití!)
    Starý kód:
    API.SD.Ticket.Remove(ticketId, personId, ignoreRights);
    Nahraďte za:
    API.SD.Ticket.Remove(ticketId, personId, Ticket.RemoveFlags.IgnoreRights);
  11. API.SD.Ticket - do metody "RestoreRemoved" přibyl nový parametr "flags" typu "RemoveFlags", který symbolizuje příznak při obnovení. Parametr může nabývat hodnot:
       Ticket.RemoveFlags.None (bez příznaků - výchozí hodnota),
       Ticket.RemoveFlags.IgnoreRights (ignorování práv),
       Ticket.RemoveFlags.DontCallChangeState (neměnit stav požadavku, pouze pro interní použití!)
    Chcete-li při obnovení odstraněného požadavku ignorovat práva, tak nahraďte starý kód:
    API.SD.Ticket.RestoreRemoved(ticketId, personId);
    Za:
    API.SD.Ticket.RestoreRemoved(ticketId, personId, Ticket.RemoveFlags.IgnoreRights);
  12. API.SD.MessageTemplate - metoda "Evaluate" byla nahrazena metodou "EvaluateMessageForApprover".
    Starý kód:
    API.SD.MessageTemplate.EvaluateMessageForApprover(template, ticketId, SD.Model.MessageTemplate.Type, language, new HtmlTextModel(requesterNotice), isAfterApproval);
    Nahraďte za:
    API.SD.MessageTemplate.EvaluateMessageForApprover(template, ticketId, messageForApproverActId, language, new HtmlTextModel(commentForApprover));
  13. API.Common.PersonRights - v metodách:
       IsAnySectionRoleMemner,
       IsSectionRoleMember,
       IsSectionRoleMemberForTicket
    byl parametr typu "SectionRole" nahrazen parametrem typu "SectionRoles"
    Starý kód:
    API.Common.PersonRights.IsAnySectionRoleMember(personId, API.Common.PersonRights.SectionRole.Manager);
    Nahraďte za:
    API.Common.PersonRights.IsAnySectionRoleMember(personId, API.Common.PersonRights.SectionRoles.Manager);
  14. API.Common.PersonRights - v metodě HaveTicketRole byl parametr typu "TicketRole" nahrazen parametrem typu "TicketRoles".
    Starý kód:
    API.Common.PersonRights.HaveTicketRole(personId, ticketId, sectionId, PersonRights.TicketRole.TicketRequester, includeRemovedTicket);
    Nahraďte za:
    API.Common.PersonRights.HaveTicketRole(personId, ticketId, sectionId, PersonRights.TicketRoles.TicketRequester, includeRemovedTicket);
  15. ALVAO Standard HW/SW Request Forms - vlastní formulář žádosti o HW
    Formulář vytvořte znovu podle nové šablony ve složce Templates/StandardHwSwRequestForm.
    Pokud jste nový formulář vytvořili ještě před instalací A10.4 FIX1, upravte ho podle následujícího postupu:
    1. V souboru cs:
      Do metody LoadPage() hned za řádek:
      int requesterPersonId = PersonPrincipal.CurrentPersonId;
      Vložte kód:
      if (Request["PersonId"] != null)
      {
         requesterPersonId = int.Parse(Request["PersonId"]);
      }
    2. V souboru cshtml:
      Podle šablony Templates/StandardHwSwRequestForm/StandardHwSwRequestForm_Hw_NewTicket.cshtml:
      • Přejmenujte proměnnou firstChanged na firstChangedRequestedFor.
      • Definujte nové proměnné:
        var firstChangedRequester = false;
        var $requester = $('input[name="liHdTicketUserPersonId"]');
      • Přidejte nové funkce:
        $requester.on('selectionmodified.alvao', function (e, selection) { ... });
        $("#RequestedForEnabled").change(function () { ... });
  16. Vlastní schvalovací proces - pokud máte upravený pohled dbo.vApprovalAuthority_Custom, upravte jeho definici podle nového schéma databáze. Zejména nový cizí klíč schvalování dbo.tHdTicket.ApprovalId
  17. a dbo.tHdTicketApprovalItem.liHdTicketApprovalItemHdTicketApprovalId.

 

Nenašli jste co jste hledali? Zeptejte se našeho týmu technické podpory.