public ActionResult AddUrineSample_GU(StudySamples smodel) //In StudySampleHandling.cs
 {
     try
     {
         if (ModelState.IsValid)
         {
             CRUDStudySamples cm = new CRUDStudySamples();
             if (cm.AddUrineSamples(smodel))
             {
                 ViewBag.Message = "Urine Sample Processing Update completed!";
                 //Amend:
                 //ViewBag.Message = xml;  //in test mode, return the xml string to view it
                 ModelState.Clear();
             }
         }
         return(View());
     }
     catch (Exception ex)
     {
         return(View("Error", new HandleErrorInfo(ex, "StudyPersonSample", "AddUrineSample_GU"))); //create error view
     }
 }
        public ActionResult ProcessSample(StudySamples smodel)
        {
            if (ModelState.IsValid)
            {
                CRUDStudySamples cm = new CRUDStudySamples();
                int status          = cm.ProcessSample(smodel);

                if (status == 0)
                {
                    ViewBag.Message = "Sample processing information was not saved. Please try again. If the problem persists contact the data team.";
                    return(null);
                }
                else if (status == 999)
                {
                    if (smodel.Message != "")
                    {
                        ViewBag.Message = smodel.Message;
                    }
                    else
                    {
                        ViewBag.Message = "The system was not able to save your data. Please contact the data team.";
                    }
                    ViewBag.SampleProcessing = "1";
                    ViewBag.PSCID            = smodel.PSCID;
                    ViewBag.StudyName        = smodel.StudyName;
                    ViewBag.StudyID          = smodel.StudyID;
                    return(View(smodel.ViewName));
                }
                else
                {
                    //TODO: smodel.StudyName is not populating - need to bring this over from the model!
                    ViewBag.Message = "The " + smodel.SampleSetType + " sample processing data for " + smodel.PSCID + " on the " + smodel.StudyName + " study has been saved.";
                }

                string wasRedirected;
                wasRedirected = "True";
                //return View ("Index"); //Return to the /StudyPersonSample/Index view so further samples can be added.
                return(RedirectToAction("Index", new { Message = ViewBag.Message, wasRedirected = wasRedirected }));
                //return RedirectToAction("actionresult name", new { PSCID = PSCID, StudyID = StudyID, StudyName = StudyName, wasRedirected = wasRedirected});
            }

            ViewBag.SampleProcessing = "1";
            ViewBag.PSCID            = smodel.PSCID;
            ViewBag.StudyName        = smodel.StudyName;
            ViewBag.StudyID          = smodel.StudyID;

            if (smodel.CollectedSampleID > 0)
            {
                ViewBag.SampleID = smodel.CollectedSampleID;
            }
            // This is the collective bloods sample ID to which the collected samples are related and need to be linked - not needed for Growing Up at the processing stage but this may be so in another context
            if (smodel.EDTASampleID > 0)
            {
                ViewBag.EDTASampleID = smodel.EDTASampleID;
            }

            if (smodel.EDTAProcessed > 0)
            {
                ViewBag.EDTAProcessed = smodel.EDTAProcessed;
            }

            if (smodel.GelSampleID > 0)
            {
                ViewBag.GelSampleID = smodel.GelSampleID;
            }

            if (smodel.GelSerumProcessed > 0)
            {
                ViewBag.GelSerumProcessed = smodel.GelSerumProcessed;
            }

            if (smodel.LitHepSampleID > 0)
            {
                ViewBag.LitHepSampleID = smodel.LitHepSampleID;
            }

            if (smodel.LitHepProcessed > 0)
            {
                ViewBag.LitHepProcessed = smodel.LitHepProcessed;
            }

            if (smodel.OxalateSampleID > 0)
            {
                ViewBag.OxalateSampleID = smodel.OxalateSampleID;
            }

            if (smodel.OxalateProcessed > 0)
            {
                ViewBag.OxalateProcessed = smodel.OxalateProcessed;
            }
            if (smodel.BuccalSampleID > 0)
            {
                ViewBag.BuccalSampleID = smodel.BuccalSampleID;
            }

            if (smodel.BuccalProcessed > 0)
            {
                ViewBag.BuccalProcessed = smodel.BuccalProcessed;
            }

            return(View(smodel.ViewName));
        }
        //public ActionResult CollectSample(CollectSample smodel)  //will need to change this to accept xml construct if it can be done in jQuery
        public ActionResult CollectSample(StudySamples smodel)
        {
            if (ModelState.IsValid)
            {
                CRUDStudySamples cm = new CRUDStudySamples();

                //int status;
                //int sampleID;
                int status = cm.CollectSample(smodel);     //WILL NEED TO BE XML IF IT WORKS!  Try XMLWriter
                                                           //sampleID = cm.CollectSample(smodel.result[2]);
                                                           //status = cm.CollectSample(smodel.result[1]);
                                                           //sampleID = cm.CollectSample(smodel.result[2]);
                if (status == 0)
                {
                    ViewBag.Message = "This sample is already collected and aliquoted. Please add another sample to action.";
                    return(View(smodel.ViewName));
                }
                else if (status == 999)
                {
                    ViewBag.ViewName         = smodel.ViewName;
                    ViewBag.SampleProcessing = "0"; //THIS ENSURES THAT ONLY THE SAMPLE COLLECTION CONTROLS AND HTML DISPLAY
                    ViewBag.PSCID            = smodel.PSCID;
                    ViewBag.StudyName        = smodel.StudyName;
                    ViewBag.StudyID          = smodel.StudyID;
                    //ViewBag.UrineCollected = smodel.UrineCollected;
                    //ViewBag.DateOfCollection = smodel.DateOfCollection;
                    //ViewBag.TimeOfCollection = smodel.TimeOfCollection;
                    ViewBag.Message = "Collection details for this sample could not be saved at this time. Please contact your system's administrator";
                    return(View(smodel.ViewName));
                }
                else
                {
                    ViewBag.SampleProcessing = "1";  //THIS ENSURES THAT ONLY SAMPLE PROCESSING CONTROLS AND HTML DISPLAYS
                    ViewBag.PSCID            = smodel.PSCID;
                    ViewBag.StudyID          = smodel.StudyID;
                    ViewBag.StudyName        = smodel.StudyName;
                    ViewBag.ViewName         = smodel.ViewName;
                    //if ((smodel.SampleType == "Urine") || (smodel.SampleType == "Buccal"))

                    //TODO: MIGHT NEED TO DO A CALL TO SAMPLES PROCESSED PROCEDURE TO GET SAMPLES PROCESSED AS AN INTERMEDIARY VIEW BETWEEEN COLLECTION AND PROCESSING - FOR VERSION (2)???
                    if (smodel.SampleSetType == "Bloods")
                    {
                        if (smodel.EDTASampleID > 0)
                        {
                            smodel.EDTAProcessed = 1;
                        }
                        else
                        {
                            smodel.EDTAProcessed = 0;
                        }
                        if (smodel.GelSampleID > 0)
                        {
                            smodel.GelSerumProcessed = 1;
                        }
                        else
                        {
                            smodel.GelSerumProcessed = 0;
                        }
                        if (smodel.LitHepSampleID > 0)
                        {
                            smodel.LitHepProcessed = 1;
                        }
                        else
                        {
                            smodel.LitHepProcessed = 0;
                        }
                        if (smodel.OxalateSampleID > 0)
                        {
                            smodel.OxalateProcessed = 1;
                        }
                        else
                        {
                            smodel.OxalateProcessed = 0;
                        }
                        if (smodel.BuccalSampleID > 0)
                        {
                            smodel.BuccalProcessed = 1;
                        }
                        else
                        {
                            smodel.BuccalProcessed = 0;
                        }
                        ViewBag.SampleID          = smodel.CollectedSampleID; // This is the collective bloods sample ID to which the collected samples are related and need to be linked - not needed for Growing Up at the processing stage but this may be so in another context
                        ViewBag.EDTASampleID      = smodel.EDTASampleID;
                        ViewBag.EDTAProcessed     = smodel.EDTAProcessed;
                        ViewBag.GelSampleID       = smodel.GelSampleID;
                        ViewBag.GelSerumProcessed = smodel.GelSerumProcessed;
                        ViewBag.LitHepSampleID    = smodel.LitHepSampleID;
                        ViewBag.LitHepProcessed   = smodel.LitHepProcessed;
                        ViewBag.OxalateSampleID   = smodel.OxalateSampleID;
                        ViewBag.OxalateProcessed  = smodel.OxalateProcessed;
                        ViewBag.BuccalSampleID    = smodel.BuccalSampleID;
                        ViewBag.BuccalProcessed   = smodel.BuccalProcessed;
                    }
                    else
                    {
                        ViewBag.SampleID = smodel.CollectedSampleID;  //This is the urine sample ID from which aliquots may be derived
                    }

                    ViewBag.Message = "Result: The " + smodel.SampleSetName + " has been collected for " + smodel.PSCID + " and may now be processed.";
                    return(View(smodel.ViewName));
                }
                //return Json(ds, JsonRequestBehavior.AllowGet);
                //return null;// temporary placeholder return action
            }
            //if ModelState NOT IsValid!
            ViewBag.ViewName         = smodel.ViewName;
            ViewBag.SampleProcessing = "0"; //THIS ENSURES THAT ONLY THE SAMPLE COLLECTION CONTROLS AND HTML DISPLAY
            ViewBag.PSCID            = smodel.PSCID;
            ViewBag.StudyName        = smodel.StudyName;
            ViewBag.StudyID          = smodel.StudyID;

            return(View(smodel.ViewName));
        }