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); }