<?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="19">
      <Name>Ticket Auto Close</Name>
      <Description>Automatically close a resolved request after exceeding the number of days that are set to enable to reopen the request by requester.</Description>
      <UniqueId>c4a916b0-ffe3-4d16-ae59-1ab36f2ceb6f</UniqueId>
      <Version>2</Version>
      <AdvancedSettings />
      <Scripts>
        <Script id="29">
          <Name>TicketAutoClose</Name>
          <Code>using Dapper;
using System;
using System.Data;
using Microsoft.Data.SqlClient;
using Alvao.API.Common;
using Alvao.Apps.API;
using Alvao.API.SD;

public class TicketAutoClose : IPeriodicAction
{
    public string Name 
    { 
        get =&gt; "TicketAutoClose";
        set =&gt; Name = value;
    }

    public void OnPeriod(SqlConnection con)
    {
        if (Settings.Hours != null &amp;&amp; !Settings.Hours.Contains(DateTime.Now.Hour)) return;

        var ticketIdList = con.Query&lt;int&gt;(@"
SELECT
    t.iHdTicketId
FROM tHdTicket AS t
    INNER JOIN tHdSection AS s ON s.iHdSectionId = t.liHdTicketHdSectionId AND ISNULL(s.nHdSectionUserReopenDays, 0) &gt; 0
WHERE t.ClosedDate IS NULL
	AND t.dHdTicketRemoved IS NULL
    AND DATEADD(day, s.nHdSectionUserReopenDays, t.dHdTicketResolved) &lt; GETUTCDATE()");

        var systemPerson = Person.GetSystem();
        foreach (int ticketId in ticketIdList)
        {
            Ticket.Close(ticketId, systemPerson.iPersonId, Ticket.CloseFlags.IgnoreRights);
        }
    }
}
</Code>
          <IsLibCode>false</IsLibCode>
          <Codesign>EKvBt0rKnwgqYgTcsBrOdKN2MGOc5Zsccy2deqYlC9DzG4fjHh3ngP9Yn2JDWMUlqVEYqPcLwa4eWmHgtlqxcI/St8MTAaV8O23k/bWSd1oTdGxJR3vSSf/j43nKF3QAqIXEuc6hENGarHjC3yJDq7rXbaxNF25leeSb5+TbgrQ9nW4V108iIGTvMfdp+0jFVEP+2awoclXvD0JKuNk0Rn0i5TwrhJpuV6n7F6N1V0HwGiDIaM1QyrdQUCY1uB7+cjPPztoUpAWYKevKt+LJj3ZsczQCuzAz91Z0VDl9bS4TE4OaiKOSnKJhIgpGoXgSeCehukHFCZ2unfu57zGffg==</Codesign>
        </Script>
        <Script id="34">
          <Name>Settings</Name>
          <Code>using System.Collections.Generic;

public static class Settings
{
    /*
     * The action to automatically close tickets will be executed only in specified hours. 
     * Example values:
     *
     *  null;                         - run action every hour
     *  new List&lt;int&gt;();              - never run the action
     *  new List&lt;int&gt;() { 0, 12 };    - run action at midnight and at noon
     *
     */

    public static readonly List&lt;int&gt; Hours = new List&lt;int&gt;() { 0 };
}
</Code>
          <IsLibCode>true</IsLibCode>
          <Codesign>EMz4W/WNQ0nb6IYrtl72hX6nevc11gq3W9S0MAWRZaNAWmF4esVFYjqLVzwPMQovBb924F+R8rQp4UWvsFcAtMK9tSIFAibcYxXa8DFRMaY/J2lxnFGfidAnSRXyj9Gwsh/I5PsVULLV/CA7hL1nCAHJwgYfySkvrTK+bDCs8FZ0tVH94LU59hXUa3YPMj1etnxXaDWx45CAd0ghf9K47Z+29CAnYtRprzaWWEPWkNO0vmK77TsboP1/0YFwRo7C7sQJqPy+d5Qi/pMrjw9d327QSfhQlh82255evAKlisNRydDn6G2NQEPpxaqKtzZdI9Rjt7fLxVkAg6T1NKbkGA==</Codesign>
        </Script>
      </Scripts>
    </Application>
  </Applications>
</AlvaoApplication>