Skip to content

Instantly share code, notes, and snippets.

@amkherad
Last active July 16, 2020 17:58
Show Gist options
  • Select an option

  • Save amkherad/88b8a06d1b6b544df383e076cea6673e to your computer and use it in GitHub Desktop.

Select an option

Save amkherad/88b8a06d1b6b544df383e076cea6673e to your computer and use it in GitHub Desktop.
public class IranPostRemoteDet
{
private readonly IDataFormatters _dataFormatters;
private const string DetPlaceholder = @"
{ShCode}
{PharmacyMobile}
{RequestOrderId}
{StateId}
{CityId}
{ProductName}
{WeightInGrams}
{ProductPriceInIrr}
{Tip}
{IsCod}
{ReceiverFirstName}-{ReceiverLastName}
{Address}
{AddressPostalCode}
{Email}
{BuyerIpAddress}
{TotalPrice}
{Tax}
";
public int OrderId { get; set; }
public int ThirdPartyTransferId { get; set; }
public string PharmacyMobile { get; set; }
public string PostRequestOrderId { get; set; }
public string ProductName { get; set; }
public string ShCode { get; set; }
public double WeightInGrams { get; set; }
public string ReceiverFirstName { get; set; }
public string ReceiverLastName { get; set; }
public decimal ProductPriceInIrr { get; set; }
public string Address { get; set; }
public string AddressPostalCode { get; set; }
public string Email { get; set; }
public string BuyerIpAddress { get; set; }
public decimal TotalPrice { get; set; }
public decimal Tax { get; set; }
public int ProvinceId { get; set; }
public int CityId { get; set; }
public int Tip { get; set; }
public bool IsCod { get; set; }
public IranPostRemoteDet(
IDataFormatters dataFormatters
)
{
if (dataFormatters is null) throw new ArgumentNullException(nameof(dataFormatters));
_dataFormatters = dataFormatters;
}
public string ValidPostalCode
{
get
{
var result = AddressPostalCode;
if (!_dataFormatters.IsValidIranPostalCode(result) || result.Equals("1111111111"))
{
result = GeneratePostalCode(CityId);
if (result.Equals("1111111111"))
{
result = "1311111111";
}
}
return _dataFormatters.NormalizeUnicodeNumbers(result);
}
}
private string GeneratePostalCode(
int cityId
)
{
var postalCode = cityId.ToString().PadRight(10, '1');
return postalCode;
}
public string Det
{
get
{
var productName = ProductName;
var receiverFirstName = ReceiverFirstName.Replace('^', ' ');
var receiverLastName = ReceiverLastName.Replace('^', ' ');
var addressPostalCode = ValidPostalCode.Replace('^', ' ');
var address = Address.Replace('^', ' ');
var shCode = ShCode.Replace('^', ' ');
var pharmacyMobile = PharmacyMobile.Replace('^', ' ');
var email = Email?.Replace('^', ' ') ?? "--";
var buyerIpAddress = BuyerIpAddress?.Replace('^', ' ') ?? "0";
var sb = new StringBuilder(200);
sb.Append(shCode).Append('^'); // ShCode
sb.Append(pharmacyMobile).Append('^'); // PharmacyMobile
sb.Append(PostRequestOrderId).Append('^'); // OrderId
sb.Append(ProvinceId).Append('^'); //ProvinceId
sb.Append(CityId).Append('^'); // CityId
sb.Append(productName).Append('^'); // ProductName
sb.Append(WeightInGrams.ToString("0")).Append('^'); // WeightInGrams
sb.Append(ProductPriceInIrr.ToString("0")).Append('^'); // ProductPriceInIrr
sb.Append(Tip.ToString()).Append('^'); // Tip
sb.Append(IsCod ? "0" : "1").Append('^'); // IsCod
sb.Append(receiverFirstName).Append('-').Append(receiverLastName).Append('^'); // ReceiverFirstName
sb.Append(address).Append('^'); // Address
sb.Append(addressPostalCode).Append('^'); // AddressPostalCode
sb.Append(email).Append('^'); // Email
sb.Append(buyerIpAddress).Append('^'); // BuyerIpAddress
sb.Append(TotalPrice.ToString("0")).Append('^'); // TotalPrice
sb.Append(Tax.ToString("0")); // Tax
return sb.ToString();
}
}
public override string ToString() => Det;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment