public string CreateExpiredJob(Job job, IDictionary <string, string> parameters, DateTime createdAt,
                                       TimeSpan expireIn)
        {
            // TODO make this a transaction

            var invocationData = InvocationData.Serialize(job);

            var persistedJob = new Entities.Job()
            {
                InvocationData = JsonConvert.SerializeObject(invocationData),
                Arguments      = invocationData.Arguments,
                CreatedAt      = createdAt,
                ExpireAt       = createdAt.Add(expireIn)
            };


            return(UsingDatabase(db =>
            {
                int jobId = Convert.ToInt32(db.InsertWithIdentity(persistedJob));

                foreach (var parameter in parameters)
                {
                    db.Insert(new JobParameter()
                    {
                        JobId = jobId,
                        Name = parameter.Key,
                        Value = parameter.Value
                    });
                }


                return jobId.ToString(CultureInfo.InvariantCulture);
            }));
        }
        public string CreateExpiredJob(Job job, IDictionary<string, string> parameters, DateTime createdAt,
            TimeSpan expireIn)
        {

          
            // TODO make this a transaction

            var invocationData = InvocationData.Serialize(job);

            var persistedJob = new Entities.Job()
            {
                InvocationData = JsonConvert.SerializeObject(invocationData),
                Arguments = invocationData.Arguments,
                CreatedAt = createdAt,
                ExpireAt = createdAt.Add(expireIn)
            };


            return UsingDatabase(db =>
            {


                int jobId = Convert.ToInt32(db.InsertWithIdentity(persistedJob));

                foreach (var parameter in parameters)
                {
                    db.Insert(new JobParameter()
                    {
                        JobId = jobId,
                        Name = parameter.Key,
                        Value = parameter.Value
                    });

                }


                return jobId.ToString(CultureInfo.InvariantCulture);
            });
        }