public int GenerateUkprn()
        {
            var ukprn = random.Next(MaximumUkprn);

            dataContext.ClearPaymentsData(ukprn);
            return(ukprn);
        }
        public int GenerateUkprn()
        {
            string appGuid =
                ((GuidAttribute)Assembly.GetExecutingAssembly().
                 GetCustomAttributes(typeof(GuidAttribute), false).
                 GetValue(0)).Value.ToString();

            Provider provider = null;

            using (var mutex = new Mutex(false, $"Global\\{{{appGuid}}}"))
            {
                if (mutex.WaitOne(TimeSpan.FromMinutes(1)))
                {
                    provider = GetProvider();
                    // check job queue for ukprn - looking for status 2 or 3 which will block queue
                    var blockedList = jobService.GetJobsByStatus(provider.Ukprn, 2, 3).Result;
                    if (blockedList.Any())
                    {
                        provider = GetProvider();
                    }

                    dataContext.ClearPaymentsData(provider.Ukprn);
                    mutex.ReleaseMutex();
                }
                else
                {
                    throw new ApplicationException("Unable to obtain a Ukprn due to a locked Mutex");
                }
            }

            return(provider.Ukprn);
        }