コード例 #1
0
        public static PerCallContext Begin(IPerCallDataProvider provider, string operation, string input)
        {
            var ret = new PerCallContext();

            //We find the cost for this call
            decimal cost = provider.GetOperationCost(operation);


            //We put a row into the DataProviderCall table
            ret.Call = new DataProviderCall
            {
                DataProviderCallId = Guid.NewGuid(),
                ActivityId         = BrokerContext.Current.ActivityId,
                CallTime           = DateTime.Now,
                Cost             = cost,
                Input            = input,
                DataProviderType = provider.GetType().ToString(),
                Operation        = operation,
                Success          = null,
            };

            ret.DataContext = new ApplicationDataContext();
            ret.DataContext.DataProviderCalls.InsertOnSubmit(ret.Call);
            ret.DataContext.SubmitChanges();

            return(ret);
        }
コード例 #2
0
        public static decimal GetOperationCost(this IPerCallDataProvider provider, string operation)
        {
            var ret      = 0m;
            var propName = ToOperationCostPropertyName(operation);

            if (provider.ConfigurationProperties.ContainsKey(propName))
            {
                decimal.TryParse(provider.ConfigurationProperties[propName], out ret);
            }
            return(ret);
        }
コード例 #3
0
        public static IPerCallDataProvider CreatePaidDataProvider(CprBroker.Data.DataProviders.DataProvider dbDataProvider)
        {
            IPerCallDataProvider dataProvider = Utilities.Reflection.CreateInstance <IPerCallDataProvider>(dbDataProvider.TypeName);

            if (dataProvider is IPerCallDataProvider)
            {
                try
                {
                    dataProvider.ConfigurationProperties = dbDataProvider.ToPropertiesDictionary(dataProvider.ConfigurationKeys.Select(p => p.Name).ToArray());
                }
                catch (Exception ex)
                {
                    Local.Admin.LogException(ex);
                }
            }
            return(dataProvider);
        }
コード例 #4
0
        public static void LogAction(this IPerCallDataProvider provider, String operation, string input, Boolean success)
        {
            //We find the cost for this call
            decimal cost = provider.GetOperationCost(operation);

            //We put a row into the DataProviderCall table
            using (var dataContext = new ApplicationDataContext())
            {
                var call = new DataProviderCall
                {
                    DataProviderCallId = System.Guid.NewGuid(),
                    ActivityId         = BrokerContext.Current.ActivityId,
                    CallTime           = DateTime.Now,
                    Cost             = cost,
                    Input            = input,
                    DataProviderType = provider.GetType().ToString(),
                    Operation        = operation,
                    Success          = success,
                };
                dataContext.DataProviderCalls.InsertOnSubmit(call);
                dataContext.SubmitChanges();
            }
        }
コード例 #5
0
 public static PerCallContext BeginCall(this IPerCallDataProvider provider, string operation, string input)
 {
     return(PerCallContext.Begin(provider, operation, input));
 }
コード例 #6
0
 public static DataProviderConfigPropertyInfo[] ToOperationConfigPropertyInfo(this IPerCallDataProvider prov)
 {
     return(ToDataProviderConfigPropertyInfo(prov.OperationKeys));
 }