• Share
    • Twitter
    • LinkedIn
    • Facebook
    • Email
  • Feedback
  • Edit
Show / Hide Table of Contents

How to use ActivityArchive filters

Some tooltip text!
• 5 minutes to read
 • 5 minutes to read

The following example shows the use of ActivityArchive filters. Unlike other archives, the ActivityArchive allows us to take columns from multiple archives.

using SuperOffice;
using SuperOffice.CRM.Services;
using SuperOffice.CRM.ArchiveLists;
using SuperOffice.CRM.Archives;

using (SoSession newSession = SoSession.Authenticate("sam", "sam"))
{
  //Initializing the Archive Agent
  using(ArchiveAgent newArcAgt = new ArchiveAgent())
  {
    //Setting the Parameters that needs to be passed to Agent method  
    //Parameter - providerName - The name of the archive provider to use
    string archiveProviderName = ContactActivityArchiveProvider.ProviderName;

    //Parameter - columns - An array of the names of the columns wanted.
    string[] archiveColumns = new string[] { "contact/name", "associate/fullName", "person/fullName", "saleId", "currency" };

    //Parameter - sortOrder - Sort order for the archive
    ArchiveOrderByInfo[] archiveSrtOrd = new ArchiveOrderByInfo[1];
    archiveSrtOrd[0] = new ArchiveOrderByInfo("saleId", SuperOffice.Util.OrderBySortType.DESC);

    //Parameter - restriction - Archive restrictions
    ArchiveRestrictionInfo[] archiveRest = new ArchiveRestrictionInfo[1];
    archiveRest[0] = new ArchiveRestrictionInfo("contact/contactId", "=", 68);

    //Parameter - entities - Which entities to include
    string[] desiredEntities = { "contact", "sale", "document", "person", "appointment" };

    //Parameter - page - Page number, page 0 is the first page
    int page = 1;

    //Parameter - pageSize - Page size
    int pageSize = 10;

    // Get a page of results for an archive list, 
    // explicitly specifying the restrictions, orderby and chosen columns
    ArchiveListItem[] arcLstItm = newArcAgt.GetArchiveListByColumns(
      archiveProviderName, archiveColumns, archiveSrtOrd, archiveRest, desiredEntities, page, pageSize);

    int rowNo = 1;
    foreach (ArchiveListItem archiveRow in arcLstItm)
    {
      if (rowNo == 1)
      {
        foreach (KeyValuePair<string, ArchiveColumnData> column in archiveRow.ColumnData)
        {
          Console.Write(column.Key + "\t");
        }
        Console.WriteLine();
      }

      // extract and display the displayValue of each cell 
      // (you need to parse culturally sensitive values such as dates
      // to get the correct client display format)
      foreach (ArchiveColumnData archiveCell in archiveRow.ColumnData.Values)
      {
        Console.Write(archiveCell.DisplayValue + "\t");
      }
      Console.WriteLine();
      ++rowNo;
    }
  }
}

As we can see, GetArchiveListByColumns() requires 7 parameters to be passed into it. These are explained in detail on the IArchiveProvider page. Below we touch on what's different.

archiveProviderName

ContactActivityArchiveProvider.ProviderName

archiveColumns

{ "contact/name", "associate/fullName", "person/fullName", "saleId", "currency" }

Note

The ActivityArchive allows us to take columns from multiple archives. Here we retrieve the name of the contact from the Contact entity, the full name of the associate from the Associate entity, the full name of the person from the Person entity, and SaleId and Currency from the Sale entity. These retrieves would be impossible if we were to have an Appointment column or a Document column.

archiveSrtOrd

Here we are sporting by the saleId with the highest ID first in the list. Any row that doesn’t have a saleId will be sorted as value 0 and would be shown at the end of the list.

archiveRest

What we have done here is set the restriction, as ContactID, which is obtained from the Contact entity, should equal to the specified value (68). This means that we are retrieving all the Appointments, Documents, and Sales records that have the contactId as "68".

desiredEntities

The entities correspond to checkboxes in the Archive GUI. If we remove "document" from this list, the Document records are never fetched from the database and the Documents rows will disappear from the results.

Once all parameters have been created, we may use them with the GetArchiveListByColumns method, which returns an array of ArchiveListItem.

The next step we need to do is to loop through the above array just like we did in the first example.

Output

person/fullName  contact/name    associate/fullName   currency    saleId
0-Feil           Software AS     Brede Bredesen       SEK         [I:19]
0-Feil           Software AS     Arne Arnesen         SEK         [I:10]0-Feil           Software AS     Arne Arnesen         NOK         [I:9]
0-Feil           Software AS     Arne Arnesen         NOK         [I:8]
0-Feil           Software AS     Arne Arnesen         SEK         [I:7]
© SuperOffice. All rights reserved.
SuperOffice |  Community |  Release Notes |  Privacy |  Site feedback |  Search Docs |  About Docs |  Contribute |  Back to top