public static ExpenseItemEntity ToTableEntity(this ExpenseItem model, string expensePartitionKey, string expenseId)
        {
            var expenseItem = new ExpenseItemEntity
            {
                PartitionKey = expensePartitionKey,
                RowKey       = KeyGenerator.ExpenseItemEntityRowKey(expenseId, model.Id),
                Amount       = model.Amount,
                Description  = model.Description,
                HasReceipt   = model.Receipt != null && model.Receipt.LongLength != 0
            };

            return(expenseItem);
        }
        public static ExpenseItem ToModel(this IExpenseItemEntity entity)
        {
            var expenseItem = new ExpenseItem
            {
                Id                  = new StorageKey(KeyGenerator.ExpenseItemEntitySuffix(entity.RowKey)).InvertedTicks,
                Amount              = entity.Amount.HasValue ? entity.Amount.Value : 0,
                Description         = entity.Description,
                ReceiptUrl          = null,
                ReceiptThumbnailUrl = null
            };

            if (entity.HasReceipt.HasValue && entity.HasReceipt.Value)
            {
                var    imageName = expenseItem.Id + ".jpg";
                var    account   = CloudConfiguration.GetStorageAccount(AzureConnectionStrings.DataConnection);
                string thumbnail = Path.Combine(account.BlobEndpoint.ToString(), AzureStorageNames.ReceiptContainerName, "thumbnails", imageName);
                string receipt   = Path.Combine(account.BlobEndpoint.ToString(), AzureStorageNames.ReceiptContainerName, imageName);
                expenseItem.ReceiptThumbnailUrl = new Uri(thumbnail);
                expenseItem.ReceiptUrl          = new Uri(receipt);
            }
            return(expenseItem);
        }
        public static ExpenseItem ToModel(this IExpenseItemEntity entity)
        {
            var expenseItem = new ExpenseItem
                                  {
                                      Id = new StorageKey(KeyGenerator.ExpenseItemEntitySuffix(entity.RowKey)).InvertedTicks,
                                      Amount = entity.Amount.HasValue ? entity.Amount.Value : 0,
                                      Description = entity.Description,
                                      ReceiptUrl = null,
                                      ReceiptThumbnailUrl = null
                                  };

            if (entity.HasReceipt.HasValue && entity.HasReceipt.Value)
            {
                var imageName = expenseItem.Id + ".jpg";
                var account = CloudConfiguration.GetStorageAccount(AzureConnectionStrings.DataConnection);
                string thumbnail = Path.Combine(account.BlobEndpoint.ToString(), AzureStorageNames.ReceiptContainerName, "thumbnails", imageName);
                string receipt = Path.Combine(account.BlobEndpoint.ToString(), AzureStorageNames.ReceiptContainerName, imageName);
                expenseItem.ReceiptThumbnailUrl = new Uri(thumbnail);
                expenseItem.ReceiptUrl = new Uri(receipt);
            }
            return expenseItem;
        }