﻿<?xml version="1.0" encoding="utf-8"?>
<AlvaoApplication xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ModelVersion="1">
  <Applications>
    <Application id="44">
      <Name>Ticket Open Attachments</Name>
      <Description>Custom command for opening an attachment link saved in Attachments custom item for the ticket.
It is available only on ticket with this custom item on its process.</Description>
      <Scripts>
        <Script id="92">
          <Name>Settings</Name>
          <Code>public class Settings
{
    public const string CommandName = "Open Attachments";
    public const int CommandPosition = 1;
    public const string CommandIcon = "folder_open_20_regular";
    public const string AttachmentsCustomColumnName = "Attachments";
}</Code>
          <IsLibCode>true</IsLibCode>
        </Script>
        <Script id="93">
          <Name>OpenAttachments</Name>
          <Code>using System;
using Alvao.API.Common.Model.CustomApps;
using Alvao.Apps.API;

public class OpenAttachments : IEntityCommand 
{
    public string Id {get; set;}
    public Entity Entity {get; set;}

    public OpenAttachments()
    {
        Id = "TicketOpenAttachments";
        Entity = Entity.Request;
    }

    public EntityCommandShowResult Show(int entityId, int personId)
    {   
        int position = Settings.CommandPosition; 
        string icon =  Settings.CommandIcon; 
        string name =  Settings.CommandName; 

        string link = GetTicketAttachments(entityId);

        if (string.IsNullOrWhiteSpace(link))
            return new EntityCommandShowResult (false, name, icon, position);

        Uri DocumentUri;
        if (!Uri.TryCreate(link, UriKind.Absolute, out DocumentUri))
            return new EntityCommandShowResult (false, name, icon, position);

        return new EntityCommandShowResult (true, name, icon, position);
    }

    public CommandResult Run(int entityId, int personId)
    {
        MessageType messageType = MessageType.None; 
        string messageText = string.Empty;
        string navigateToUrl = GetTicketAttachments(entityId);
        return new CommandResult(messageType, messageText, navigateToUrl);
    }

    private static string GetTicketAttachments(int ticketId)
    {
        return Alvao.API.Common.Database.ReadColumn(ticketId, "tHdTicketCust", Settings.AttachmentsCustomColumnName);
    }
}</Code>
          <IsLibCode>false</IsLibCode>
        </Script>
      </Scripts>
    </Application>
  </Applications>
</AlvaoApplication>