0% found this document useful (0 votes)
33 views10 pages

Converter Mapper

This document defines several classes that implement converters to map string values to GUIDs by querying Dynamics CRM. The converters retrieve entity records by various attributes like code, name and return the entity ID or an empty GUID if no match is found.

Uploaded by

quocbao24102000
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
33 views10 pages

Converter Mapper

This document defines several classes that implement converters to map string values to GUIDs by querying Dynamics CRM. The converters retrieve entity records by various attributes like code, name and return the entity ID or an empty GUID if no match is found.

Uploaded by

quocbao24102000
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 10

public class ReasonCodeToReasonGuidWithLinkCategoryConverter :

IValueConverter<string, Guid>
{
private readonly ICrmService _crmService;
public ReasonCodeToReasonGuidWithLinkCategoryConverter(ICrmService
crmService)
{
_crmService = crmService;
}
public Guid Convert(string sourceMember, ResolutionContext context)
{
if (string.IsNullOrEmpty(sourceMember))
return Guid.Empty;

var query = new QueryExpression(ReasonListEntity.EntityLogicalName);

var codeFilter = new FilterExpression(LogicalOperator.And);


codeFilter.AddCondition(new
ConditionExpression(ReasonListEntity.Attributes.ReasonCode,
ConditionOperator.Equal, sourceMember));
codeFilter.AddCondition(new
ConditionExpression(ReasonListEntity.Attributes.Category, ConditionOperator.Equal,
(int)ReasonListEntity.OptionSets.ReasonListCategory.Link));
codeFilter.AddCondition(new
ConditionExpression(ReasonListEntity.Attributes.EffectiveDate,
ConditionOperator.LessEqual, DateTime.UtcNow));
FilterExpression filterExpiry = new(LogicalOperator.Or);
filterExpiry.AddCondition(new
ConditionExpression(ReasonListEntity.Attributes.ExpiredDate,
ConditionOperator.Null));
filterExpiry.AddCondition(new
ConditionExpression(ReasonListEntity.Attributes.ExpiredDate,
ConditionOperator.GreaterThan, DateTime.UtcNow));

query.Criteria.Filters.AddRange(codeFilter, filterExpiry);
var entities = _crmService.RetrieveMultiple(query).Entities;
return entities.Any() ? entities[0].Id : Guid.Empty;

}
}

public class CountryCodeToCountryNullableGuidConverter :


IValueConverter<string, Guid?>
{
private readonly ICrmService _crmService;

public CountryCodeToCountryNullableGuidConverter(ICrmService crmService)


{
_crmService = crmService;
}

public Guid? Convert(string sourceMember, ResolutionContext context)


{//+86, +95, ...
if (string.IsNullOrEmpty(sourceMember))
{
return Guid.Empty;
}
var query = new QueryExpression(CountryEntity.EntityLogicalName)
{
ColumnSet = new ColumnSet(CountryEntity.PrimaryId),
Criteria =
{
FilterOperator = LogicalOperator.Or,
Conditions = {
new
ConditionExpression(CountryEntity.Attributes.CountryCode, ConditionOperator.Equal,
sourceMember),
new ConditionExpression(CountryEntity.Attributes.Code,
ConditionOperator.Equal, sourceMember)
}
}
};
var entities = _crmService.RetrieveMultiple(query).Entities;
return entities.Count > 0 ? entities[0].Id : Guid.Empty;
}
}
public class CurrencyCodeToCurrencyNullableGuidConverter :
IValueConverter<string, Guid?>
{
private readonly ICrmService _crmService;

public CurrencyCodeToCurrencyNullableGuidConverter(ICrmService crmService)


{
_crmService = crmService;
}

public Guid? Convert(string sourceMember, ResolutionContext context)


{
if (string.IsNullOrEmpty(sourceMember))
{
return Guid.Empty;
}
var query = new QueryExpression(CurrencyEntity.EntityLogicalName)
{
ColumnSet = new ColumnSet(CurrencyEntity.PrimaryId),
Criteria =
{
Conditions = {new
ConditionExpression(CurrencyEntity.Attributes.CurrencyCode,
ConditionOperator.Equal, sourceMember) }
}
};
var entities = _crmService.RetrieveMultiple(query).Entities;
return entities.Count > 0 ? entities[0].Id : Guid.Empty;
}
}
public class RelationshipNameCodeToRelationshipGuidConverter :
IValueConverter<string, Guid>
{
private readonly ICrmService _crmService;

public RelationshipNameCodeToRelationshipGuidConverter(ICrmService
crmService)
{
_crmService = crmService;
}

public Guid Convert(string sourceMember, ResolutionContext context)


{
var query = new
QueryExpression(EntityRelationshipNameEntity.EntityLogicalName)
{
ColumnSet = new ColumnSet(EntityRelationshipNameEntity.PrimaryId),
Criteria =
{
Conditions = {new
ConditionExpression(EntityRelationshipNameEntity.Attributes.RelationshipNameCode,
ConditionOperator.Equal, sourceMember) }
}
};
var entities = _crmService.RetrieveMultiple(query).Entities;
return entities.Count > 0 ? entities[0].Id : Guid.Empty;
}
}
public class EntityNameToEntityGuidConverter : IValueConverter<string, Guid>
{
private readonly ICrmService _crmService;

public EntityNameToEntityGuidConverter(ICrmService crmService)


{
_crmService = crmService;
}

public Guid Convert(string sourceMember, ResolutionContext context)


{
var query = new QueryExpression(EntityEntity.EntityLogicalName)
{
ColumnSet = new ColumnSet(EntityEntity.PrimaryId),
Criteria =
{
Conditions = {new
ConditionExpression(EntityEntity.Attributes.PrimaryName, ConditionOperator.Equal,
sourceMember) }
}
};
var entities = _crmService.RetrieveMultiple(query).Entities;
return entities.Count > 0 ? entities[0].Id : Guid.Empty;
}
}

public class AccountNoToMasterEntityGuidConverter : IValueConverter<string,


Guid>
{
private readonly ICrmService _crmService;

public AccountNoToMasterEntityGuidConverter(ICrmService crmService)


{
_crmService = crmService;
}

public Guid Convert(string sourceMember, ResolutionContext context)


{
var query = new QueryExpression(AccountEntity.EntityLogicalName)
{
ColumnSet = new ColumnSet(AccountEntity.Attributes.MasterEntity),
Criteria =
{
Conditions = {new
ConditionExpression(AccountEntity.Attributes.AccountNo, ConditionOperator.Equal,
sourceMember) }
}
};
var entities = _crmService.RetrieveMultiple(query).Entities;
return entities.Count > 0 ?
entities[0].GetAttributeValue<Guid>(AccountEntity.Attributes.MasterEntity) :
Guid.Empty;
}
}
public class CityNameToCityGuidConverter : IValueConverter<string, Guid?>
{
private readonly ICrmService _crmService;

public CityNameToCityGuidConverter(ICrmService crmService)


{
_crmService = crmService;
}

public Guid? Convert(string sourceMember, ResolutionContext context)


{
if(string.IsNullOrEmpty(sourceMember))
{
return Guid.Empty;
}
var query = new QueryExpression(CityEntity.EntityLogicalName)
{
ColumnSet = new ColumnSet(CityEntity.PrimaryId),
Criteria =
{
Conditions = {new
ConditionExpression(CityEntity.Attributes.City, ConditionOperator.Equal,
sourceMember) }
}
};
var entities = _crmService.RetrieveMultiple(query).Entities;
return entities.Count > 0 ? entities[0].Id : Guid.Empty;
}
}
public class BankCodeToBankGuidConverter : IValueConverter<string, Guid>
{
private readonly ICrmService _crmService;

public BankCodeToBankGuidConverter(ICrmService crmService)


{
_crmService = crmService;
}

public Guid Convert(string sourceMember, ResolutionContext context)


{
//MR: convert from interface with specify swift code that may not be in
crm now, may no need this but should set here
if
(sourceMember.Equals(CoreConstants.OtherOptionCode.OtherBankSwiftCodeInterface))
{
sourceMember =
CoreConstants.OtherOptionCode.OtherBankNameSwiftCode;
}
var subString = string.Empty;
if (!
sourceMember.Equals(CoreConstants.OtherOptionCode.OtherBankNameSwiftCode) &&
sourceMember.Length > 7)
{
subString = $"%{sourceMember.Substring(0, 8)}%";
}

var query = new QueryExpression(BankNameEntity.EntityLogicalName)


{
ColumnSet = new ColumnSet(BankNameEntity.PrimaryId),
};

FilterExpression filter = new FilterExpression(LogicalOperator.And);


filter.AddCondition(new
ConditionExpression(BankNameEntity.Attributes.State, ConditionOperator.Equal,
0));//MR : 0 = active

FilterExpression childFilter = new


FilterExpression(LogicalOperator.Or);
childFilter.Conditions.AddRange(new[] {
new ConditionExpression(BankNameEntity.Attributes.SwiftCode,
ConditionOperator.Like, subString),
new ConditionExpression(BankNameEntity.Attributes.BankName,
ConditionOperator.Equal, sourceMember),
} );

filter.AddFilter(childFilter);

query.Criteria.Filters.Add(filter);
var entities = _crmService.RetrieveMultiple(query).Entities;
return entities.Count > 0 ? entities[0].Id : Guid.Empty;
}
}
public class CountryISOCodeToCountryGuidConverter : IValueConverter<string,
Guid>
{
private readonly ICrmService _crmService;

public CountryISOCodeToCountryGuidConverter(ICrmService crmService)


{
_crmService = crmService;
}

public Guid Convert(string sourceMember, ResolutionContext context)


{//VN, US, ...
var query = new QueryExpression(CountryEntity.EntityLogicalName)
{
ColumnSet = new ColumnSet(CountryEntity.PrimaryId),
Criteria =
{
Conditions = {new
ConditionExpression(CountryEntity.Attributes.Code, ConditionOperator.Equal,
sourceMember) }
}
};
var entities = _crmService.RetrieveMultiple(query).Entities;
return entities.Count > 0 ? entities[0].Id : Guid.Empty;
}
}
public class CountryISOCodeToCountryNullableGuidConverter :
IValueConverter<string, Guid?>
{
private readonly ICrmService _crmService;

public CountryISOCodeToCountryNullableGuidConverter(ICrmService crmService)


{
_crmService = crmService;
}

public Guid? Convert(string sourceMember, ResolutionContext context)


{//VN, US, ...
var query = new QueryExpression(CountryEntity.EntityLogicalName)
{
ColumnSet = new ColumnSet(CountryEntity.PrimaryId),
Criteria =
{
Conditions = {new
ConditionExpression(CountryEntity.Attributes.Code, ConditionOperator.Equal,
sourceMember) }
}
};
var entities = _crmService.RetrieveMultiple(query).Entities;
return entities.Count > 0 ? entities[0].Id : Guid.Empty;
}
}

public class ReasonGuidToCode : IValueConverter<Guid, string>


{
private readonly ICrmService _crmService;

public ReasonGuidToCode(ICrmService crmService)


{
_crmService = crmService;
}

string IValueConverter<Guid, string>.Convert(Guid sourceMember,


ResolutionContext context)
{
if (sourceMember == Guid.Empty)
{
return null;
}
var query = new QueryExpression(ReasonListEntity.EntityLogicalName)
{
ColumnSet = new ColumnSet(ReasonListEntity.Attributes.ReasonCode),
Criteria =
{
Conditions = {new ConditionExpression(ReasonListEntity.PrimaryId,
ConditionOperator.Equal, sourceMember)}
}
};
var entities = _crmService.RetrieveMultiple(query).Entities;
return entities.Count > 0 ?
entities[0].GetAttributeValue<string>(ReasonListEntity.Attributes.ReasonCode) :
null;
}
}

public class RedFlagCodeToRedFlagViewDtoConverter : IValueConverter<string,


List<RedFlagsViewDto>>
{
private readonly ICrmService _crmService;

public RedFlagCodeToRedFlagViewDtoConverter(ICrmService crmService)


{
_crmService = crmService;
}
private List<string> ConvertRedFlagString(string redFlagsString)
{
return redFlagsString.Split(";").Select(c => c).ToList();
}
public List<RedFlagsViewDto> Convert(string sourceMember, ResolutionContext
context)
{//+86, +95, ...
if (sourceMember is null)
{
return null;
}
var redflagViewDtos = new List<RedFlagsViewDto>();

var redflagCodes = ConvertRedFlagString(sourceMember);

var query = new QueryExpression(RedFlagsEntity.EntityLogicalName)


{
ColumnSet = new ColumnSet(RedFlagsEntity.PrimaryId,
RedFlagsEntity.Attributes.Description, RedFlagsEntity.Attributes.RedFlagsCode)
};
var codeFilter = new FilterExpression(LogicalOperator.And);
codeFilter.AddCondition(new
ConditionExpression(RedFlagsEntity.Attributes.RedFlagsCode, ConditionOperator.In,
redflagCodes));
codeFilter.AddCondition(new
ConditionExpression(RedFlagsEntity.Attributes.EffectiveDate,
ConditionOperator.LessEqual, DateTime.UtcNow));
FilterExpression filterExpiry = new(LogicalOperator.Or);
filterExpiry.AddCondition(new
ConditionExpression(RedFlagsEntity.Attributes.ExpiredDate,
ConditionOperator.Null));
filterExpiry.AddCondition(new
ConditionExpression(RedFlagsEntity.Attributes.ExpiredDate,
ConditionOperator.GreaterThan, DateTime.UtcNow));
query.Criteria.Filters.AddRange(codeFilter, filterExpiry);

var entities = _crmService.RetrieveMultiple(query).Entities;


var codes = entities.Select(c => new RedFlagsViewDto
{
Code =
c.GetAttributeValue<string>(RedFlagsEntity.Attributes.RedFlagsCode),
Description =
c.GetAttributeValue<string>(RedFlagsEntity.Attributes.Description),
Id = c.Id
}).ToList();

return codes;
}
}

public class TypeOfRiskCodeToTypeOfRiskAddDtoConverter :


IValueConverter<List<int>, List<TypeOfRiskAddDto>>
{
private readonly ICrmService _crmService;
private readonly DateTime currentDay = DateTime.UtcNow.Date;
public TypeOfRiskCodeToTypeOfRiskAddDtoConverter(ICrmService crmService)
{
_crmService = crmService;
}
public List<TypeOfRiskAddDto> Convert(List<int> sourceMember,
ResolutionContext context)
{
if (sourceMember is not { Count: > 0 })
{
return null;
}
QueryExpression query = new
QueryExpression(TypeOfRiskEntity.EntityLogicalName)
{
ColumnSet = new ColumnSet(TypeOfRiskEntity.Attributes.Text,
TypeOfRiskEntity.Attributes.Code)
};
var codeFilter = new FilterExpression(LogicalOperator.And);
codeFilter.AddCondition(new
ConditionExpression(TypeOfRiskEntity.Attributes.Code, ConditionOperator.In,
sourceMember));
codeFilter.AddCondition(new
ConditionExpression(TypeOfRiskEntity.Attributes.EffectiveDate,
ConditionOperator.LessEqual, DateTime.UtcNow));
FilterExpression filterExpiry = new(LogicalOperator.Or);
filterExpiry.AddCondition(new
ConditionExpression(TypeOfRiskEntity.Attributes.ExpiryDate,
ConditionOperator.Null));
filterExpiry.AddCondition(new
ConditionExpression(TypeOfRiskEntity.Attributes.ExpiryDate,
ConditionOperator.GreaterThan, DateTime.UtcNow));
query.Criteria.Filters.AddRange(codeFilter, filterExpiry);
var entities = _crmService.RetrieveMultiple(query).Entities;
try
{
var codes = entities.Select(c => new TypeOfRiskAddDto
{
Code =
c.GetAttributeValue<int>(TypeOfRiskEntity.Attributes.Code),
Text =
c.GetAttributeValue<string>(TypeOfRiskEntity.Attributes.Text),
Id = c.Id
}).ToList();
return codes;
}
catch(Exception ex)
{
throw new Exception();
}

}
}
public class CountryCodeToCountryGuidConverter : IValueConverter<string, Guid>
{
private readonly ICrmService _crmService;

public CountryCodeToCountryGuidConverter(ICrmService crmService)


{
_crmService = crmService;
}

public Guid Convert(string sourceMember, ResolutionContext context)


{//+86, +95, ...
if (string.IsNullOrEmpty(sourceMember))
{
return Guid.Empty;
}
var query = new QueryExpression(CountryEntity.EntityLogicalName)
{
ColumnSet = new ColumnSet(CountryEntity.PrimaryId),
Criteria =
{
FilterOperator = LogicalOperator.Or,
Conditions = {
new
ConditionExpression(CountryEntity.Attributes.CountryCode, ConditionOperator.Equal,
sourceMember),
new ConditionExpression(CountryEntity.Attributes.Code,
ConditionOperator.Equal, sourceMember)
}
}
};
var entities = _crmService.RetrieveMultiple(query).Entities;
return entities.Count > 0 ? entities[0].Id : Guid.Empty;
}
}
public class CountryPhoneCodeToCountryNameConverter : IValueConverter<string,
string>
{
private readonly ICrmService _crmService;

public CountryPhoneCodeToCountryNameConverter(ICrmService crmService)


{
_crmService = crmService;
}

public string Convert(string sourceMember, ResolutionContext context)


{//+86
if (string.IsNullOrEmpty(sourceMember)) return "";
var query = new QueryExpression(CountryEntity.EntityLogicalName)
{
ColumnSet = new ColumnSet(CountryEntity.Attributes.Country),
Criteria =
{
Conditions = {new
ConditionExpression(CountryEntity.Attributes.CountryCode, ConditionOperator.Equal,
sourceMember) }
}
};
var entities = _crmService.RetrieveMultiple(query).Entities;
return entities.Count > 0 ?
entities[0].GetAttributeValue<string>(CountryEntity.Attributes.Country) : "";
}
}
public class CountryIsoCodeToCountryNameConverter : IValueConverter<string,
string>
{
private readonly ICrmService _crmService;

public CountryIsoCodeToCountryNameConverter(ICrmService crmService)


{
_crmService = crmService;
}

public string Convert(string sourceMember, ResolutionContext context)


{//VN
var query = new QueryExpression(CountryEntity.EntityLogicalName)
{
ColumnSet = new ColumnSet(CountryEntity.Attributes.Country),
Criteria =
{
Conditions = {new
ConditionExpression(CountryEntity.Attributes.Code, ConditionOperator.Equal,
sourceMember) }
}
};
var entities = _crmService.RetrieveMultiple(query).Entities;
return entities.Count > 0 ?
entities[0].GetAttributeValue<string>(CountryEntity.Attributes.Country) : "";
}
}

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy