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.
%USERPROFILE%\source\repos\ALVAO\Documentation\DocCs\upgrade\customization_upgrade.aspx
|
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.
- 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:
- V sekci Správa – Aplikace vytvořte vhodnou strukturu aplikací.
- 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).
- Do skriptu vložte obsah přenášeného souboru.
- Na začátek skriptu přidejte:
using Alvao.Apps.API;
using Alvao.Apps.WebService;
a odstraňte
using System.Web.WebServices;
- V automatických akcích nahraďte interface IAutoAction za ITicketAutoAction.
- 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();
- Metodu SendMail nahraďte vhodnou metodou z Alvao.API.
-
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.
- 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)
- 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).
- 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.
- 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.
- 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();
}
}
- 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);
- 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>")
- 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);
- 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);
- 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));
- 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);
- 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);
- 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:
- 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"]);
}
- 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 () { ... });
- 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
a dbo.tHdTicketApprovalItem.liHdTicketApprovalItemHdTicketApprovalId.
Nenašli jste co jste hledali? Zeptejte se našeho týmu technické podpory.
|