private async Task <ResultModel <IDictionary <string, string> > > GetTagsValues(Guid?agreementId)
        {
            if (agreementId == null)
            {
                return(new InvalidParametersResultModel <IDictionary <string, string> >());
            }

            var agreement = await _context.Agreements
                            .Include(i => i.Organization)
                            .Include(i => i.Contact)
                            .Include(i => i.Lead)
                            .ThenInclude(i => i.Currency)
                            .Include(i => i.OrganizationAddress)
                            .ThenInclude(i => i.City)
                            .ThenInclude(i => i.Region)
                            .FirstOrDefaultAsync(x => x.Id.Equals(agreementId));

            var tagsValues = ContractTagsHelper.GetInjectedStrings(agreement);

            return(new SuccessResultModel <IDictionary <string, string> >(tagsValues));
        }
        /// <summary>
        /// Add tags
        /// </summary>
        /// <param name="services"></param>
        /// <returns></returns>
        public static IServiceCollection AddCustomTags(this IServiceCollection services)
        {
            // system
            ContractTagsHelper.AddNewKey("CurrentDate", (agreement, objects) => DateTime.Now.ToString("dd/MM/yyyy"));

            // Lead organization
            ContractTagsHelper.AddNewKey("OrganizationName", (agreement, objects) => agreement.Organization?.Name ?? "");
            ContractTagsHelper.AddNewKey("IDNO", (agreement, objects) => agreement.Organization?.FiscalCode ?? "");
            ContractTagsHelper.AddNewKey("IBAN", (agreement, objects) => agreement.Organization?.IBANCode ?? "");
            ContractTagsHelper.AddNewKey("Bank", (agreement, objects) => agreement.Organization?.Bank ?? "");
            ContractTagsHelper.AddNewKey("Phone", (agreement, objects) => agreement.Organization?.Phone ?? "");
            ContractTagsHelper.AddNewKey("Email", (agreement, objects) => agreement.Organization?.Email ?? "");
            ContractTagsHelper.AddNewKey("CodTva", (agreement, objects) => agreement.Organization?.VitCode ?? "");
            ContractTagsHelper.AddNewKey("CodSwift", (agreement, objects) => agreement.Organization?.CodSwift ?? "");

            // Address
            ContractTagsHelper.AddNewKey("Region", (agreement, objects) =>
            {
                var address = agreement.OrganizationAddress;
                if (address == null)
                {
                    return("");
                }
                return(address.City?.Region?.Name ?? "");
            });
            ContractTagsHelper.AddNewKey("City", (agreement, objects) =>
            {
                var address = agreement.OrganizationAddress;
                if (address == null)
                {
                    return("");
                }
                return(address.City?.Name ?? "");
            });
            ContractTagsHelper.AddNewKey("Street", (agreement, objects) =>
            {
                var address = agreement.OrganizationAddress;
                if (address == null)
                {
                    return("");
                }
                return(address.Street ?? "");
            });

            //Contact
            ContractTagsHelper.AddNewKey("Contact", (agreement, objects) =>
            {
                var contact = agreement.Contact;
                if (contact == null)
                {
                    return("");
                }
                return(contact.FirstName ?? "" + " " + contact.LastName);
            });

            // Lead

            ContractTagsHelper.AddNewKey("Currency", (agreement, objects) => agreement.Lead.Value.ToString());

            // Agreement
            ContractTagsHelper.AddNewKey("Value", (agreement, objects) => agreement.Values.ToString());
            ContractTagsHelper.AddNewKey("Commission", (agreement, objects) => agreement.Commission.ToString());


            return(services);
        }