/// <summary>
    /// Run the code example.
    /// </summary>
    /// <param name="user">The DFP user object running the code example.</param>
    public override void Run(DfpUser user) {
      // Get the SuggestedAdUnitService.
      SuggestedAdUnitService suggestedAdUnitService = (SuggestedAdUnitService) user.GetService(
          DfpService.v201408.SuggestedAdUnitService);

      // Set defaults for page and filterStatement.
      SuggestedAdUnitPage page = new SuggestedAdUnitPage();
      Statement filterStatement = new Statement();
      int offset = 0;

      try {
        do {
          // Create a statement to get all suggested ad units.
          filterStatement.query = "LIMIT 500 OFFSET " + offset;

          // Get suggested ad units by statement.
          page = suggestedAdUnitService.getSuggestedAdUnitsByStatement(filterStatement);

          if (page.results != null) {
            int i = page.startIndex;
            foreach (SuggestedAdUnit suggestedAdUnit in page.results) {
              Console.WriteLine("{0}) Suggested ad unit with ID \"{1}\", and number of requests " +
                  "\"{2}\" was found.", i, suggestedAdUnit.id, suggestedAdUnit.numRequests);
              i++;
            }
          }
          offset += 500;
        } while (offset < page.totalResultSetSize);

        Console.WriteLine("Number of results found: " + page.totalResultSetSize);
      } catch (Exception ex) {
        Console.WriteLine("Failed to get suggested ad units. Exception says \"{0}\"",
            ex.Message);
      }
    }
        public void TestAllStatementBuilderPartialFunctions()
        {
            StatementBuilder statementBuilder = new StatementBuilder()
              .Select("Name, Id")
              .From("Geo_Target")
              .Where("Targetable = :targetable")
              .OrderBy("Id DESC")
              .Limit(StatementBuilder.SUGGESTED_PAGE_LIMIT)
              .Offset(0)
              .AddValue("targetable", true)
              .IncreaseOffsetBy(StatementBuilder.SUGGESTED_PAGE_LIMIT)
              .RemoveLimitAndOffset();
              Assert.AreEqual(null, statementBuilder.GetOffset());

              Statement expectedStatement = new Statement();
              expectedStatement.query = "SELECT Name, Id FROM Geo_Target"
              + " WHERE Targetable = :targetable ORDER BY Id DESC";
              String_ValueMapEntry targetableEntry = new String_ValueMapEntry();
              targetableEntry.key = "targetable";
              BooleanValue targetableValue = new BooleanValue();
              targetableValue.value = true;
              targetableEntry.value = targetableValue;
              expectedStatement.values = new String_ValueMapEntry[] {targetableEntry};
              Assert.True(StatementsAreEqual(expectedStatement, statementBuilder.ToStatement()));
        }
        public void TestStatementBuilderBasicStatement()
        {
            StatementBuilder statementBuilder = new StatementBuilder()
              .Where("ID = 1");

              Statement expectedStatement = new Statement();
              expectedStatement.query = "WHERE ID = 1";
              expectedStatement.values = new String_ValueMapEntry[0];

              Assert.True(StatementsAreEqual(expectedStatement,
                                     statementBuilder.ToStatement()));
        }
    public User GetUserByEmail(DfpUser user, string email) {
      UserService userService = (UserService) user.GetService(DfpService.v201408.UserService);

      // Create a Statement to get all users sorted by name.
      Statement statement = new Statement();
      statement.query = string.Format("where email = '{0}' LIMIT 1", email);

      UserPage page = userService.getUsersByStatement(statement);

      if (page.results != null && page.results.Length > 0) {
        return page.results[0];
      } else {
        return null;
      }
    }
 private static bool StatementsAreEqual(Statement s1, Statement s2) {
   // Assumes both Statements are non-null and have non-null properties
   if (String.Compare(s1.query, s2.query, true) != 0) {
     return false;
   }
   if (s1.values.Length != s2.values.Length) {
     return false;
   }
   // Assumes Statement values are in the same order
   for (int i = 0; i < s1.values.Length; i++) {
     if (!StringValueMapEntriesAreEqual(s1.values[i], s2.values[i])) {
       return false;
     }
   }
   return true;
 }
    /// <summary>
    /// Run the code example.
    /// </summary>
    /// <param name="user">The DFP user object running the code example.</param>
    public override void Run(DfpUser user) {
      // Get the PlacementService.
      PlacementService placementService =
          (PlacementService) user.GetService(DfpService.v201408.PlacementService);

      // Create a statement to select first 500 placements.
      Statement filterStatement = new Statement();
      filterStatement.query = "LIMIT 500";

      try {
        // Get placements by statement.
        PlacementPage page = placementService.getPlacementsByStatement(filterStatement);

        if (page.results != null) {
          Placement[] placements = page.results;

          // Update each local placement object by enabling AdSense targeting.
          foreach (Placement placement in placements) {
            placement.targetingDescription = (string.IsNullOrEmpty(placement.description))?
                "Generic description" : placement.description;
            placement.targetingAdLocation = "All images on sports pages.";
            placement.targetingSiteName = "http://code.google.com";
            placement.isAdSenseTargetingEnabled = true;
          }

          // Update the placements on the server.
          placements = placementService.updatePlacements(placements);

          // Display results.
          if (placements != null) {
            foreach (Placement placement in placements) {
              Console.WriteLine("A placement with ID \"{0}\", name \"{1}\", and AdSense targeting" +
                  " enabled \"{2}\" was updated.", placement.id, placement.name,
                  placement.isAdSenseTargetingEnabled);
            }
          } else {
            Console.WriteLine("No placements updated.");
          }
        }
      } catch (Exception ex) {
        Console.WriteLine("Failed to update placements. Exception says \"{0}\"",
            ex.Message);
      }
    }
    /// <summary>
    /// Run the code example.
    /// </summary>
    /// <param name="dfpUser">The DFP user object running the code example.</param>
    public override void Run(DfpUser dfpUser) {
      // Get the UserTeamAssociationService.
      UserTeamAssociationService userTeamAssociationService = (UserTeamAssociationService)
          dfpUser.GetService(DfpService.v201408.UserTeamAssociationService);

      // Set defaults for page and filterStatement.
      UserTeamAssociationPage page = new UserTeamAssociationPage();
      Statement filterStatement = new Statement();
      int offset = 0;

      try {
        do {
          // Create a statement to get all user team associations.
          filterStatement.query = "LIMIT 500 OFFSET " + offset;

          // Get user team associations by statement.
          page = userTeamAssociationService.getUserTeamAssociationsByStatement(filterStatement);

          if (page.results != null) {
            int i = page.startIndex;
            foreach (UserTeamAssociation userTeamAssociation in page.results) {
              Console.WriteLine("{0}) User team association between user with ID \"{1}\" and " +
                  "team with ID \"{2}\" was found.", i, userTeamAssociation.userId,
                  userTeamAssociation.teamId);
              i++;
            }
          }

          offset += 500;
        } while (offset < page.totalResultSetSize);

        Console.WriteLine("Number of results found: {0}." + page.totalResultSetSize);
      } catch (Exception ex) {
        Console.WriteLine("Failed to get user team associations. Exception says \"{0}\"",
            ex.Message);
      }
    }
    /// <summary>
    /// Run the code example.
    /// </summary>
    /// <param name="user">The DFP user object running the code example.</param>
    public override void Run(DfpUser user) {
      // Get the PlacementService.
      PlacementService placementService =
          (PlacementService) user.GetService(DfpService.v201408.PlacementService);

      // Sets defaults for page and Statement.
      PlacementPage page = new PlacementPage();
      Statement statement = new Statement();
      int offset = 0;

      try {
        do {
          // Create a Statement to get all ad units.
          statement.query = string.Format("LIMIT 500 OFFSET {0}", offset);

          // Get ad units by Statement.
          page = placementService.getPlacementsByStatement(statement);

          if (page.results != null && page.results.Length > 0) {
            int i = page.startIndex;
            foreach (Placement placement in page.results) {
              Console.WriteLine("{0}) Placement with ID = '{1}' and name = '{2}' was found.",
                  i, placement.id, placement.name);
              i++;
            }
          }

          offset += 500;
        } while (offset < page.totalResultSetSize);

        Console.WriteLine("Number of results found: {0}" + page.totalResultSetSize);
      } catch (Exception ex) {
        Console.WriteLine("Failed to get all placements. Exception says \"{0}\"",
            ex.Message);
      }
    }
    /// <summary>
    /// Run the code example.
    /// </summary>
    /// <param name="user">The DFP user object running the code example.</param>
    public override void Run(DfpUser user) {
      // Create the CreativeWrapperService.
      CreativeWrapperService creativeWrapperService = (CreativeWrapperService) user.GetService(
          DfpService.v201408.CreativeWrapperService);

      // Set defaults for page and Statement.
      CreativeWrapperPage page = new CreativeWrapperPage();
      Statement statement = new Statement();
      int offset = 0;

      try {
        do {
          // Create a Statement to get all creative wrappers.
          statement.query = string.Format("LIMIT 500 OFFSET {0}", offset);

          // Get creative wrappers by Statement.
          page = creativeWrapperService.getCreativeWrappersByStatement(statement);

          if (page.results != null && page.results.Length > 0) {
            int i = page.startIndex;
            foreach (CreativeWrapper wrapper in page.results) {
              Console.WriteLine("Creative wrapper with ID \'{0}\' applying to label \'{1}\' with " +
                "status \'{2}\' was found.", wrapper.id, wrapper.labelId, wrapper.status);
              i++;
            }
          }

          offset += 500;
        } while (offset < page.totalResultSetSize);

        Console.WriteLine("Number of results found: {0}", page.totalResultSetSize);
      } catch (Exception ex) {
        Console.WriteLine("Failed to get active creative wrappers. Exception says \"{0}\"",
            ex.Message);
      }
    }
    public void TestUpdateUsers() {
      Statement statement = new Statement();
      statement.query = String.Format("WHERE id = {0} LIMIT 1", salespersonId);
      User user = userService.getUsersByStatement(statement).results[0];
      user.preferredLocale = (user.preferredLocale == "fr_FR")? "en_US" : "fr_FR";

      User[] newUsers = null;

      Assert.DoesNotThrow(delegate() {
        newUsers = userService.updateUsers(new User[] {user});
      });

      Assert.NotNull(newUsers);
      Assert.AreEqual(newUsers.Length, 1);
      Assert.AreEqual(newUsers[0].id, user.id);
      Assert.AreEqual(newUsers[0].preferredLocale, user.preferredLocale);
    }
 public virtual CreativeTemplatePage getCreativeTemplatesByStatement(Statement filterStatement) {
   object[] results = this.Invoke("getCreativeTemplatesByStatement", new object[] { filterStatement });
   return ((CreativeTemplatePage) (results[0]));
 }
    public void TestGetUsersByStatement() {
      Statement statement = new Statement();
      statement.query = "ORDER BY name LIMIT 500";

      UserPage page = null;

      Assert.DoesNotThrow(delegate() {
        page = userService.getUsersByStatement(statement);
      });

      Assert.NotNull(page);
      Assert.NotNull(page.results);

      List<long> salesPersonIds = new List<long>();
      List<long> traffickerIds = new List<long>();

      foreach(User tempUser in page.results) {
        if (tempUser.roleName == "Salesperson") {
          salesPersonIds.Add(tempUser.id);
        } else if (tempUser.roleName == "Trafficker") {
          traffickerIds.Add(tempUser.id);
        }
      }
      Assert.Contains(salespersonId, salesPersonIds);
      Assert.Contains(traffickerId, traffickerIds);
    }
    public void TestPerformUserAction() {
      Statement statement = new Statement();
      statement.query = string.Format("WHERE id = {0}", salespersonId);

      DeactivateUsers action = new DeactivateUsers();

      UpdateResult result = null;

      Assert.DoesNotThrow(delegate() {
        result = userService.performUserAction(action, statement);
      });

      Assert.NotNull(result);
      Assert.AreEqual(result.numChanges, 1);

      // Activate the user again.

      Assert.DoesNotThrow(delegate() {
        result = userService.performUserAction(new ActivateUsers(), statement);
      });

      Assert.NotNull(result);
      Assert.AreEqual(result.numChanges, 1);
    }
    public AdUnit FindRootAdUnit(DfpUser user) {
      // Get InventoryService.
      InventoryService inventoryService =
          (InventoryService)user.GetService(DfpService.v201408.InventoryService);

      // Create a Statement to only select the root ad unit.
      Statement statement = new Statement();
      statement.query = "WHERE parentId IS NULL LIMIT 500";

      // Get ad units by Statement.
      AdUnitPage page = inventoryService.getAdUnitsByStatement(statement);
      return page.results[0];
    }
 public virtual AdRulePage getAdRulesByStatement(Statement statement) {
   object[] results = this.Invoke("getAdRulesByStatement", new object[] { statement });
   return ((AdRulePage) (results[0]));
 }
        public void TestGetLineItemCreativeAssociationsByStatement()
        {
            Statement statement = new Statement();
              statement.query = string.Format("WHERE lineItemId = '{0}' LIMIT 500", lineItemId3);

              LineItemCreativeAssociationPage page = null;
              Assert.DoesNotThrow(delegate() {
            page = licaService.getLineItemCreativeAssociationsByStatement(statement);
              });
              Assert.NotNull(page);
              Assert.NotNull(page.results);
              Assert.AreEqual(page.totalResultSetSize, 1);

              Assert.NotNull(page.results[0]);
              Assert.AreEqual(page.results[0].creativeId, lica1.creativeId);
              Assert.AreEqual(page.results[0].lineItemId, lica1.lineItemId);
        }
 public virtual UpdateResult performAdRuleAction(AdRuleAction adRuleAction, Statement filterStatement) {
   object[] results = this.Invoke("performAdRuleAction", new object[] { adRuleAction, filterStatement });
   return ((UpdateResult) (results[0]));
 }
        public void TestPerformLineItemAction()
        {
            Statement statement = new Statement();
              statement.query = string.Format("WHERE orderId = '{0}' and status = '{1}'",
              orderId, ComputedStatus.NEEDS_CREATIVES);

              ActivateLineItems action = new ActivateLineItems();
              UpdateResult result = null;

              Assert.DoesNotThrow(delegate() {
            result = lineItemService.performLineItemAction(action, statement);
              });

              Assert.NotNull(result);
        }
 public virtual LineItemPage getLineItemsByStatement(Statement filterStatement) {
   object[] results = this.Invoke("getLineItemsByStatement", new object[] { filterStatement });
   return ((LineItemPage) (results[0]));
 }
        public void TestGetPlacementsByStatement()
        {
            // Create a Statement to only select active placements.
              Statement statement = new Statement();
              statement.query = string.Format("WHERE id = '{0}'", placement.id);

              PlacementPage page = null;

              Assert.DoesNotThrow(delegate() {
            page = placementService.getPlacementsByStatement(statement);
              });

              Assert.NotNull(page);
              Assert.NotNull(page.results);
              Assert.AreEqual(page.results.Length, 1);

              Assert.AreEqual(page.results[0].id, placement.id);
              Assert.AreEqual(page.results[0].name, placement.name);
              Assert.AreEqual(page.results[0].description, placement.description);
              Assert.Contains(adUnit1.id, page.results[0].targetedAdUnitIds);
              Assert.Contains(adUnit2.id, page.results[0].targetedAdUnitIds);
        }
 public virtual ResultSet select(Statement selectStatement) {
   object[] results = this.Invoke("select", new object[] { selectStatement });
   return ((ResultSet) (results[0]));
 }
 public virtual UpdateResult performLineItemAction(LineItemAction lineItemAction, Statement filterStatement) {
   object[] results = this.Invoke("performLineItemAction", new object[] { lineItemAction, filterStatement });
   return ((UpdateResult) (results[0]));
 }
        public void TestPerformPlacementAction()
        {
            Statement statement = new Statement();
              statement.query = string.Format("WHERE status = '{0}'", InventoryStatus.ACTIVE);

              DeactivatePlacements action = new DeactivatePlacements();

              UpdateResult result = null;

              Assert.DoesNotThrow(delegate() {
            result = placementService.performPlacementAction(action, statement);
              });

              Assert.NotNull(result);
              Assert.GreaterOrEqual(result.numChanges, 0);
        }
 public virtual ContentMetadataKeyHierarchyPage getContentMetadataKeyHierarchiesByStatement(Statement filterStatement) {
   object[] results = this.Invoke("getContentMetadataKeyHierarchiesByStatement", new object[] { filterStatement });
   return ((ContentMetadataKeyHierarchyPage) (results[0]));
 }
        public void TestGetLineItemsByStatement()
        {
            Statement statement = new Statement();
              statement.query = string.Format("WHERE id = '{0}' LIMIT 1", lineItem1.id);

              LineItemPage page = null;

              Assert.DoesNotThrow(delegate() {
            page = lineItemService.getLineItemsByStatement(statement);
              });

              Assert.NotNull(page);
              Assert.AreEqual(page.totalResultSetSize, 1);
              Assert.NotNull(page.results);
              Assert.AreEqual(page.results[0].id, lineItem1.id);
              Assert.AreEqual(page.results[0].name, lineItem1.name);
              Assert.AreEqual(page.results[0].orderId, lineItem1.orderId);
        }
 public virtual UpdateResult performContentMetadataKeyHierarchyAction(ContentMetadataKeyHierarchyAction contentMetadataKeyHierarchyAction, Statement filterStatement) {
   object[] results = this.Invoke("performContentMetadataKeyHierarchyAction", new object[] { contentMetadataKeyHierarchyAction, filterStatement });
   return ((UpdateResult) (results[0]));
 }
    /// <summary>
    /// Run the code example.
    /// </summary>
    /// <param name="user">The DFP user object running the code example.</param>
    public override void Run(DfpUser user) {
      // Get the InventoryService.
      InventoryService inventoryService =
          (InventoryService) user.GetService(DfpService.v201408.InventoryService);

      // Get the PlacementService.
      PlacementService placementService =
          (PlacementService) user.GetService(DfpService.v201408.PlacementService);

      // Create local placement object to store skyscraper ad units.
      Placement skyscraperAdUnitPlacement = new Placement();
      skyscraperAdUnitPlacement.name = string.Format("Skyscraper AdUnit Placement #{0}",
          this.GetTimeStamp());
      skyscraperAdUnitPlacement.description = "Contains ad units that can hold creatives " +
          "of size 120x600";

      // Create local placement object to store medium square ad units.
      Placement mediumSquareAdUnitPlacement = new Placement();
      mediumSquareAdUnitPlacement.name = string.Format("Medium Square AdUnit Placement #{0}",
          this.GetTimeStamp());
      mediumSquareAdUnitPlacement.description = "Contains ad units that can hold creatives " +
          "of size 300x250";

      // Create local placement object to store banner ad units.
      Placement bannerAdUnitPlacement = new Placement();
      bannerAdUnitPlacement.name = string.Format("Banner AdUnit Placement #{0}",
          this.GetTimeStamp());
      bannerAdUnitPlacement.description = "Contains ad units that can hold creatives " +
          "of size 468x60";

      List<Placement> placementList = new List<Placement>();

      // Get the first 500 ad units.
      Statement statement = new Statement();
      statement.query = "LIMIT 500";

      List<string> mediumSquareTargetedUnitIds = new List<string>();
      List<string> skyscraperTargetedUnitIds = new List<string>();
      List<string> bannerTargetedUnitIds = new List<string>();

      try {
        AdUnitPage page = inventoryService.getAdUnitsByStatement(statement);

        // Separate the ad units by size.
        if (page.results != null) {
          foreach (AdUnit adUnit in page.results) {
            if (adUnit.parentId != null && adUnit.adUnitSizes != null) {
              foreach (AdUnitSize adUnitSize in adUnit.adUnitSizes) {
                Size size = adUnitSize.size;
                if (size.width == 300 && size.height == 250) {
                  if (!mediumSquareTargetedUnitIds.Contains(adUnit.id)) {
                    mediumSquareTargetedUnitIds.Add(adUnit.id);
                  }
                } else if (size.width == 120 && size.height == 600) {
                  if (!skyscraperTargetedUnitIds.Contains(adUnit.id)) {
                    skyscraperTargetedUnitIds.Add(adUnit.id);
                  }
                } else if (size.width == 468 && size.height == 60) {
                  if (!bannerTargetedUnitIds.Contains(adUnit.id)) {
                    bannerTargetedUnitIds.Add(adUnit.id);
                  }
                }
              }
            }
          }
        }
        mediumSquareAdUnitPlacement.targetedAdUnitIds = mediumSquareTargetedUnitIds.ToArray();
        skyscraperAdUnitPlacement.targetedAdUnitIds = skyscraperTargetedUnitIds.ToArray();
        bannerAdUnitPlacement.targetedAdUnitIds = bannerTargetedUnitIds.ToArray();


        // Only create placements with one or more ad unit.
        if (mediumSquareAdUnitPlacement.targetedAdUnitIds.Length != 0) {
          placementList.Add(mediumSquareAdUnitPlacement);
        }

        if (skyscraperAdUnitPlacement.targetedAdUnitIds.Length != 0) {
          placementList.Add(skyscraperAdUnitPlacement);
        }

        if (bannerAdUnitPlacement.targetedAdUnitIds.Length != 0) {
          placementList.Add(bannerAdUnitPlacement);
        }

        Placement[] placements =
          placementService.createPlacements(placementList.ToArray());

        // Display results.
        if (placements != null) {
          foreach (Placement placement in placements) {
            Console.Write("A placement with ID = '{0}', name ='{1}', and containing " +
                "ad units {{", placement.id, placement.name);

            foreach (string adUnitId in placement.targetedAdUnitIds) {
              Console.Write("{0}, ", adUnitId);
            }
            Console.WriteLine("} was created.");
          }
        } else {
          Console.WriteLine("No placements created.");
        }

      } catch (Exception ex) {
        Console.WriteLine("Failed to create placements. Exception says \"{0}\"",
            ex.Message);
      }
    }
 public virtual CustomTargetingValuePage getCustomTargetingValuesByStatement(Statement filterStatement) {
   object[] results = this.Invoke("getCustomTargetingValuesByStatement", new object[] { filterStatement });
   return ((CustomTargetingValuePage) (results[0]));
 }
        public void TestPerformLineItemCreativeAssociationAction()
        {
            Statement statement = new Statement();
              statement.query = string.Format("WHERE lineItemId = '{0}' LIMIT 1", lineItemId3);

              DeactivateLineItemCreativeAssociations action = new DeactivateLineItemCreativeAssociations();

              UpdateResult result = null;
              Assert.DoesNotThrow(delegate() {
            result = licaService.performLineItemCreativeAssociationAction(action, statement);
              });

              Assert.NotNull(result);
              Assert.AreEqual(result.numChanges, 1);
        }
 public virtual UpdateResult performCustomTargetingValueAction(CustomTargetingValueAction customTargetingValueAction, Statement filterStatement) {
   object[] results = this.Invoke("performCustomTargetingValueAction", new object[] { customTargetingValueAction, filterStatement });
   return ((UpdateResult) (results[0]));
 }