2016-12-19 2 views
1

Я работаю над проектом, который является шлюзом пациента с E-health.Как создать последовательность в действии контроллера?

Я хочу сгенерировать число (тип int) в отношении формы отправки от View до Controller (Когда phlebotomist получит образец крови, он установит флажок и нажмите кнопку отправки). Этот номер является номером образца крови пациента, который будет сгенерирован в моем контроллере и будет сохранен в базе данных. Я использую логику ниже, чтобы создать число, но оно всегда дает мне нуль.

Пожалуйста, дайте мне знать, как я могу создавать номера по порядку и хранить в базе данных?

public ActionResult AddSampleTest(int Pid, int Tid, int Stid, string Comment ,string testDate,int DotorID) 
    { 
     int sampleNumber=1; 
     Random rnd = new Random(); 
     int[] sample = new int[50000]; 
     rnd.Next(); 
     for (int ctr = 1; ctr <= sample.Length; ctr++) 
     { 
      sampleNumber=sample[ctr + 1]; 

     } 




     string sampleno = sampleNumber.ToString(); 
     DateTime TestDate = Convert.ToDateTime(testDate); 
     int Recomended_Test_DoctorID = DotorID; 

     // Update the Sample Status 
     PatientTest objpatientTest = db.PatientTests.Where(x => x.PatientID == Pid && x.Testid == Tid && x.SubTestId == Stid && x.Date==TestDate &&x.DoctorId== Recomended_Test_DoctorID).FirstOrDefault(); 
     objpatientTest.SampleStatus = "Sample Received"; 
     objpatientTest.SampleNumber = sampleno; 
     db.SaveChanges(); 

     var name = User.Identity.Name; 
     int Lid = db.LabAttendantRecords.Where(x => x.Name == name).Select(x => x.User_id).FirstOrDefault(); 



     LabTestSample obj = new LabTestSample(); 
      obj.labtestid = Tid; 
      obj.PatientId = Pid; 
      obj.subtestid = Stid; 
      obj.labAtendid = Lid; 
      obj.date = DateTime.Now.Date; 
      obj.sampleReceived = true; 


      obj.Comment = sampleno; 
      db.LabTestSamples.Add(obj); 
      db.SaveChanges(); 

     return RedirectToAction("TestSampleNumber", "LabAttendantDashboard", new { sampleno}); 

     // Use This for add Result 
     return RedirectToAction("SubTest", "LabAttendantDashboard", new { Pid, Tid, Stid }); 
    } 
+0

Где вы назначаете случайное число переменной? – PMerlet

+0

Спасибо SiHa, я назначаю в конце для –

+0

Спасибо SiHa, я назначаю в конце цикла for, вы можете увидеть ниже строку sampleno = sampleNumber.ToString(); –

ответ

0

sampleNumber всегда 0, потому что каждый элемент в sample 0. Если вы хотите, чтобы это было случайное число, что вам нужно сделать что-то вроде:

Random rnd = new Random(); 
int sampleNumber = rnd.Next(); 
string sampleno = sampleNumber.ToString(); 

Если вы должны быть уверены в том, что номер образца уникален, вы должны использовать руководство:

string sampleno = Guid.NewGuid().ToString(); 
+0

Спасибо Cubi, ваша логика создает случайный номер, но я думаю, что созданные случайные числа могут быть одинаковыми. Как я могу убедиться, что случайное число не будет таким же, как в предыдущем созданном случайном числе? Каждый образец крови пациента, номер s должен быть другим и не повторяться. –

Смежные вопросы