// GET: AssayOrder/Edit/5
        public ActionResult Edit(int?id, int?WorkOrderID)
        {
            AssayOrderWithTestResults assayOrderWithTestResults = new AssayOrderWithTestResults();

            ViewBag.WorkOrderID = WorkOrderID;
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            AssayOrder assayOrder = db.AssayOrders.Find(id);

            if (assayOrder == null)
            {
                return(HttpNotFound());
            }
            ViewBag.PriorityLevelID = new SelectList(db.PriorityLevels, "PriorityLevelID", "ModifiedBy", assayOrder.PriorityLevelID);
            ViewBag.AssayID         = new SelectList(db.ProtocolNotebooks, "AssayID", "AssayName", assayOrder.AssayID);
            assayOrderWithTestResults.AssayOrder = assayOrder;
            IEnumerable <TestResult> TestResList = db.TestResults.ToList();

            foreach (TestResult val in TestResList)
            {
                if (val.AssayOrderID == assayOrder.AssayOrderID)
                {
                    assayOrderWithTestResults.testResults.Add(val);
                }
            }
            return(View(assayOrderWithTestResults));
        }
        public ActionResult ClientAddAssay(int workorderid, int LTNumber,
                                           [Bind(Include = "AssayOrderID,WorkOrderID,PriorityLevelID,AssayID,ModifiedBy,ModifiedDate,CreatedBy,CreatedDate,CompoundID")] AssayOrder assayorder)
        {
            ViewBag.PriorityLevelID = new SelectList(db.PriorityLevels, "PriorityLevelID", "WorkDaysProcessing");
            ViewBag.AssayID         = new SelectList(db.ProtocolNotebooks, "AssayID", "AssayName");
            Compound compound = new Compound();
            IEnumerable <Compound> compoundList = db.Compounds.ToList();

            foreach (Compound item in compoundList)
            {
                if (item.LTNumber == LTNumber)
                {
                    compound.CompoundName = item.CompoundName;
                }
            }

            compound.LTNumber     = LTNumber;
            compound.SequenceCode = 1;//needs function to increment sequence code
            compound.ModifiedBy   = "Client " + GetClientID();
            compound.ModifiedDate = DateTime.Now;
            compound.CreatedBy    = "Client " + GetClientID();
            compound.CreatedDate  = DateTime.Now;
            db.Compounds.Add(compound);
            db.SaveChanges();

            assayorder.WorkOrderID  = workorderid;
            assayorder.CompoundID   = compound.CompoundID;
            assayorder.ModifiedBy   = "Client " + GetClientID();
            assayorder.ModifiedDate = DateTime.Now;
            assayorder.CreatedBy    = "Client " + GetClientID();
            assayorder.CreatedDate  = DateTime.Now;
            db.AssayOrders.Add(assayorder);
            db.SaveChanges();

            NewClientOrder newClientOrder = new NewClientOrder();

            newClientOrder.workOrder = db.WorkOrders.Find(workorderid);
            IEnumerable <AssayOrder> allAssay = db.AssayOrders.ToList();

            foreach (AssayOrder item in allAssay)
            {
                if (item.WorkOrderID == newClientOrder.workOrder.WorkOrderID)
                {
                    CompoundAssayOrder myCompoundAssayOrder = new CompoundAssayOrder();
                    myCompoundAssayOrder.assayOrder = item;
                    myCompoundAssayOrder.compound   = db.Compounds.Find(item.CompoundID);
                    newClientOrder.compoundAssayOrderList.Add(myCompoundAssayOrder);
                }
            }

            foreach (var item in newClientOrder.compoundAssayOrderList)
            {
                item.assayOrder.ProtocolNotebook = db.ProtocolNotebooks.Find(item.assayOrder.AssayID);
                item.assayOrder.PriorityLevel    = db.PriorityLevels.Find(item.assayOrder.PriorityLevelID);
            }


            return(View("WorkOrderMain", newClientOrder));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            AssayOrder assayOrder = db.AssayOrders.Find(id);

            db.AssayOrders.Remove(assayOrder);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        public ActionResult Create([Bind(Include = "AssayOrderID,WorkOrderID,PriorityLevelID,AssayID,ModifiedBy,ModifiedDate,CreatedBy,CreatedDate,CompoundID")] AssayOrder assayOrder)
        {
            if (ModelState.IsValid)
            {
                db.AssayOrders.Add(assayOrder);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.PriorityLevelID = new SelectList(db.PriorityLevels, "PriorityLevelID", "ModifiedBy", assayOrder.PriorityLevelID);
            ViewBag.AssayID         = new SelectList(db.ProtocolNotebooks, "AssayID", "AssayName", assayOrder.AssayID);
            ViewBag.WorkOrderID     = new SelectList(db.WorkOrders, "WorkOrderID", "ModifiedBy", assayOrder.WorkOrderID);
            return(View(assayOrder));
        }
        // GET: AssayOrder/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            AssayOrder assayOrder = db.AssayOrders.Find(id);

            if (assayOrder == null)
            {
                return(HttpNotFound());
            }
            return(View(assayOrder));
        }
        public ActionResult Edit([Bind(Include = "AssayOrderID,WorkOrderID,PriorityLevelID,AssayID,ModifiedBy,ModifiedDate,CreatedBy,CreatedDate,CompoundID")] AssayOrder assayOrder, int?WorkOrderID)
        {
            AssayOrderWithTestResults assayOrderWithTestResults = new AssayOrderWithTestResults();

            if (ModelState.IsValid)
            {
                db.Entry(assayOrder).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Details", "WorkOrders", new { id = assayOrder.WorkOrderID }));
            }
            ViewBag.PriorityLevelID = new SelectList(db.PriorityLevels, "PriorityLevelID", "ModifiedBy", assayOrder.PriorityLevelID);
            ViewBag.AssayID         = new SelectList(db.ProtocolNotebooks, "AssayID", "AssayName", assayOrder.AssayID);
            assayOrderWithTestResults.AssayOrder = assayOrder;
            return(View(assayOrderWithTestResults));
        }
        public ActionResult ClientNewWorkOrder(FormCollection form, int?workorderid,
                                               [Bind(Include = "LTNumber,SequenceCode,CompoundName,Quantity,DateArrived,ReceivedBy,DateDue,Appearance,Weight,MolecularMass,ConfirmationDate,MaxTotalDose,ActualWeight,ModifiedBy,ModifiedDate,CreatedBy,CreatedDate")] Compound compound,
                                               [Bind(Include = "AssayOrderID,WorkOrderID,PriorityLevelID,AssayID,ModifiedBy,ModifiedDate,CreatedBy,CreatedDate,CompoundID")] AssayOrder assayorder)
        {
            ViewBag.PriorityLevelID = new SelectList(db.PriorityLevels, "PriorityLevelID", "WorkDaysProcessing");
            ViewBag.AssayID         = new SelectList(db.ProtocolNotebooks, "AssayID", "AssayName");
            WorkOrder workOrder = new WorkOrder();

            if (workorderid == null || workorderid == 0)
            {
                workOrder.ClientID     = GetClientID();
                workOrder.CreatedBy    = "Client " + GetClientID();
                workOrder.ModifiedBy   = "Client " + GetClientID();
                workOrder.DateTime     = DateTime.Now;
                workOrder.CreatedDate  = DateTime.Now;
                workOrder.ModifiedDate = DateTime.Now;
                workOrder.DiscountRate = 0; //calculate discount for customer if it applies here
                db.WorkOrders.Add(workOrder);
                db.SaveChanges();
            }
            else
            {
                workOrder = db.WorkOrders.Find(workorderid);
            }

            compound.CompoundName = form["CompoundName"];
            compound.LTNumber     = db.Compounds.Max(t => t.LTNumber) + 1;
            compound.SequenceCode = 1;
            compound.ModifiedBy   = "Client " + GetClientID();
            compound.ModifiedDate = DateTime.Now;
            compound.CreatedBy    = "Client " + GetClientID();
            compound.CreatedDate  = DateTime.Now;
            db.Compounds.Add(compound);
            db.SaveChanges();

            assayorder.WorkOrderID  = workOrder.WorkOrderID;
            assayorder.CompoundID   = compound.CompoundID;
            assayorder.ModifiedBy   = "Client " + GetClientID();
            assayorder.ModifiedDate = DateTime.Now;
            assayorder.CreatedBy    = "Client " + GetClientID();
            assayorder.CreatedDate  = DateTime.Now;
            db.AssayOrders.Add(assayorder);
            db.SaveChanges();

            NewClientOrder           newClientOrder = new NewClientOrder();
            IEnumerable <AssayOrder> allAssay       = db.AssayOrders.ToList();

            foreach (AssayOrder item in allAssay)
            {
                if (item.WorkOrderID == workOrder.WorkOrderID)
                {
                    CompoundAssayOrder myCompoundAssayOrder = new CompoundAssayOrder();
                    myCompoundAssayOrder.assayOrder = item;
                    myCompoundAssayOrder.compound   = db.Compounds.Find(item.CompoundID);
                    newClientOrder.compoundAssayOrderList.Add(myCompoundAssayOrder);
                }
            }


            newClientOrder.workOrder = workOrder;
            foreach (var item in newClientOrder.compoundAssayOrderList)
            {
                item.assayOrder.ProtocolNotebook = db.ProtocolNotebooks.Find(item.assayOrder.AssayID);
                item.assayOrder.PriorityLevel    = db.PriorityLevels.Find(item.assayOrder.PriorityLevelID);
            }
            return(View("WorkOrderMain", newClientOrder));
        }