public ActionResult View(long id, bool createIfNotFound = false)
        {
            var rvm = new ReportViewModel();
            rvm.ID = id;

            using(var c = new DataModelContext())
            {
                Network net = c.Networks
                    .Include("Nodes")
                    .Include("Links")
                    .Include("Orders")
                    .Include("OptimizationResult.Nodes")
                    .Include("OptimizationResult.Links.Link")
                    .Include("OptimizationResult.Links.Link.To")
                    .Include("OptimizationResult.Links.Link.From")
                    .SingleOrDefault(n => n.ID == id);

                if(net.OptimizationResult == null && createIfNotFound)
                {
                    net.Optimize();
                    c.SaveChanges();
                }
                rvm.Report = ReportEngine.getInstance().GenerateReport(net);
            }

            return View(rvm);
        }
Exemple #2
0
 public User GetCurrentUser(DataModelContext c, HttpContextBase context)
 {
     foreach(var u in c.Users.Where(
         u => u.Username == context.User.Identity.Name
     ))
     {
         return u;
     }
     return null;
 }
        public ActionResult Create(FormCollection collection, LoginModel model)
        {
            try
            {
                if(ModelState.IsValid && model.PassConfirm.Equals(model.Password))
                {
                    using(DataModelContext ctx = new DataModelContext())
                    {
                        if(model.PermissionCode != "a95e")
                        {
                            ModelState.AddModelError("regResult", "Permission code invalid.");
                            return View("Index", model);
                        }
                        if (ctx.Users.Any(o => o.Username == model.NewUser.Username))
                        {
                            ModelState.AddModelError("regResult", "Username already exists.");
                            return View("Index", model);
                        }
                        else
                        {
                            byte[] salt = GenerateSalt(16);

                            byte[] hash = GenerateSaltedHash(
                                System.Text.Encoding.UTF8.GetBytes(model.Password), salt);

                            ctx.Users.Add(new User()
                            {
                                EmailAddress = model.NewUser.EmailAddress,
                                RealName = model.NewUser.RealName,
                                Username = model.NewUser.Username,
                                LastLogin = System.DateTime.Now,
                                AccessGroup = model.department,
                                PasswordSalt = salt,
                                PasswordHash = hash,
                            });

                            ctx.SaveChanges();
                            FormsAuthentication.SetAuthCookie(model.NewUser.Username, false);

                            return RedirectToAction("Index", "Home");
                        }
                    }
                }
                else
                {
                    ModelState.AddModelError("regResult", "Password does not match confirmation.");
                    return View("Index", model);
                }

            }
            catch
            {
                return RedirectToAction("Index", "Home");
            }
        }
Exemple #4
0
 public User GetCurrentUser(HttpContextBase context)
 {
     using(DataModelContext ctx = new DataModelContext())
     {
         foreach(var u in ctx.Users.Where(
             u => u.Username == context.User.Identity.Name
         ))
         {
             return u;
         }
     }
     return null;
 }
Exemple #5
0
        private static void ResetTestDatabase()
        {
            using(var c = new DataModelContext())
            {
                c.Database.Delete();

                // Test user.
                User testUser = new User()
                    {
                        Username = "******",
                        RealName = "Admin Team",

                        // Password: test
                        PasswordHash = new byte[]
                        {117, 173, 203, 91, 75, 63, 147, 6, 200, 176, 45, 40, 104, 7, 114, 213,
                        169, 217, 130, 162, 40, 108, 195, 15, 113, 69, 32, 134, 67, 226, 143, 200},

                        PasswordSalt = new byte[]
                        {24, 10, 184, 91, 24, 196, 93, 99, 150, 30, 131, 109, 16, 28, 181, 193},

                        AccessGroup = DataModel.Enum.UserAccessGroup.Administrator,
                        LastLogin = DateTime.Now,
                        EmailAddress = "*****@*****.**",
                    };
                c.Users.Add(testUser);

                //c.Networks.Add(testnet1);
                XDocument doc = XDocument.Load(HttpContext.Current.Server.MapPath(@"\App_Data\MexNewSampleInputs.xml"));
                var xmlE = new XmlEngine();
                var xmlnetwork = xmlE.XmlFileToNetwork(doc);
                xmlnetwork.Name = "Example file network test";
                xmlnetwork.Author = testUser;
                xmlnetwork.LastEdit = DateTime.Now;
                c.Networks.Add(xmlnetwork);

                try
                {
                    c.SaveChanges();
                }
                catch(DbEntityValidationException e)
                {
                    foreach(var i in e.EntityValidationErrors)
                    {
                        Console.WriteLine(i.ValidationErrors);
                    }

                }

            }
        }
Exemple #6
0
 public static void ResetIfDirty()
 {
     //ResetTestDatabase();
     try
     {
         using(var ctx = new DataModelContext())
         {
             // Perform a single operation that will likely never change, to trigger the
             // exception if the model has been altered.
             ctx.Users.First(u => true);
         }
     }
     catch(InvalidOperationException)
     {
         ResetTestDatabase();
     }
 }
        public ActionResult View(long id, bool createIfNotFound = false)
        {
            var rvm = new ReportViewModel();
            rvm.ID = id;

            using(var c = new DataModelContext())
            {
                Patient net = c.Patients.SingleOrDefault(n => n.ID == id);

                //if(net.OptimizationResult == null && createIfNotFound)
                //{
                //	net.Optimize();
                //	c.SaveChanges();
                //}
                //rvm.Report = ReportEngine.getInstance().GenerateReport(net);
            }

            return View(rvm);
        }
        private static void ResetTestDatabase()
        {
            using(var c = new DataModelContext())
            {
                c.Database.Delete();

                // Test user.
                User testUser = new User()
                    {
                        Username = "******",
                        RealName = "Admin Team",

                        // Password: test
                        PasswordHash = new byte[]
                        {117, 173, 203, 91, 75, 63, 147, 6, 200, 176, 45, 40, 104, 7, 114, 213,
                        169, 217, 130, 162, 40, 108, 195, 15, 113, 69, 32, 134, 67, 226, 143, 200},

                        PasswordSalt = new byte[]
                        {24, 10, 184, 91, 24, 196, 93, 99, 150, 30, 131, 109, 16, 28, 181, 193},

                        //AccessGroup = DataModel.Enum.UserAccessGroup.Administrator,
                        LastLogin = DateTime.Now,
                        EmailAddress = "*****@*****.**",
                    };
                c.Users.Add(testUser);

                try
                {
                    c.SaveChanges();
                }
                catch(DbEntityValidationException e)
                {
                    foreach(var i in e.EntityValidationErrors)
                    {
                        Console.WriteLine(i.ValidationErrors);
                    }

                }

            }
        }
        public ActionResult Index()
        {
            var hvm = new HomeViewModel();

            using(var c = new DataModelContext())
            {
                User currentUser = UserDataEngine.getInstance().GetCurrentUser(c, HttpContext);

                if(currentUser == null)
                {
                    FormsAuthentication.SignOut();
                    return RedirectToAction("Index", "Account");
                }

                hvm.Patients = c.Patients.Include("Therapist").Where(n =>
                    n.LastName != null &&
                    n.Therapist.Username == currentUser.Username
                    ).ToList();
            }

            return View(hvm);
        }
        public ActionResult EditMedical(string PatientArthritisType, string PatientAffectedExtremity,
			string PatientDeformity, PatientViewModel model)
        {
            var pvm = new PatientViewModel();
            long patientID = 0;

            using (var c = new DataModelContext())
            {
                var patient = c.Patients.Find(model.ID);
                patientID = patient.ID;
                patient.ArthritisType = PatientArthritisType;
                patient.AffectedExtremity = PatientAffectedExtremity;
                patient.Deformity = PatientDeformity;

                c.SaveChanges();

            }

            ViewBag.Alert = "Profile update successful";
            ViewBag.AlertClass = "alert-success";
            //return View("View", pvm);
            return RedirectToAction("View", new { id = patientID });
        }
        public ActionResult EditContact(string PatientContactName, string PatientContactRelation, 
			string PatientContactPhoneNumber, string PatientContactEmail, PatientViewModel model)
        {
            var pvm = new PatientViewModel();
            long patientID = 0;

            using (var c = new DataModelContext())
            {
                var patient = c.Patients.Find(model.ID);
                patientID = patient.ID;
                patient.ContactName = PatientContactName;
                patient.ContactRelation = PatientContactRelation;
                patient.ContactPhoneNumber = PatientContactPhoneNumber;
                patient.ContactEmail = PatientContactEmail;

                c.SaveChanges();

            }

            ViewBag.Alert = "Profile update successful";
            ViewBag.AlertClass = "alert-success";
            //return View("View", pvm);
            return RedirectToAction("View", new { id = patientID });
        }
 public ActionResult Delete(long id)
 {
     using(var c = new DataModelContext())
     {
         var patient = c.Patients.Find(id);
         patient.LastName = null;
         c.SaveChanges();
     }
     return RedirectToAction("Index");
 }
        public JsonResult removeOrder(NetworkViewModel model)
        {
            ICollection<Order> orderArray = new List<Order>();
            killOptimization(model.ID);

            using(var c = new DataModelContext())
            {
                var net = c.Networks
                    .Include("Orders.Origin")
                    .Include("Orders.Destination")
                    .FirstOrDefault(n => n.ID == model.ID);

                foreach(Order o in net.Orders)
                {
                    Order whyistherenoorder = o;
                    if(o.Origin.StationCode == model.NewOrder.Origin.StationCode && o.Destination.StationCode == model.NewOrder.Destination.StationCode)
                    {
                        orderArray.Add(o);
                    }
                }

                foreach(Order o in orderArray)
                {
                    net.Orders.Remove(o);
                }
                net.LastEdit = DateTime.Now;
                c.SaveChanges();
            }
            return Json(new { success=true });
        }
        public ActionResult Upload(IEnumerable<HttpPostedFileBase> files, PatientViewModel model)
        {
            var pvm = new PatientViewModel();
            long patientID = 0;

            //HttpFileCollection someFiles = files;
            //IEnumerable<HttpPostedFileBase> someFiles = files;

            //try
            //{
            //	patientDoc = XDocument.Load(Request.Files["PatientFile"].InputStream);
            //}
            //catch (Exception e)
            //{
            //	Console.WriteLine(e.Message);
            //	ViewBag.UploadAlert = "You must select a valid file";
            //}

            using(var c = new DataModelContext())
            {
                var patient = c.Patients.Find(model.ID);
                patientID = patient.ID;

                HttpPostedFileBase patientDoc = Request.Files["PatientFile"];
                var fileName = Path.GetFileName(patientDoc.FileName);
                var path = Path.Combine(Server.MapPath("~/Content/excelfiles"), fileName);
                patientDoc.SaveAs(path);

                var ReportE = ReportEngine.getInstance();
                pvm.Report = ReportE.GenerateReport(patient, path);
                patient.ReportResult = pvm.Report;

                try
                {
                    c.SaveChanges();
                }
                catch(DbEntityValidationException e)
                {
                    foreach(var i in e.EntityValidationErrors)
                    {
                        Console.WriteLine(i.ValidationErrors);
                    }
                    throw e;
                }
                //nvm.Patients = c.Patients.Include("Therapist").Where(n => n.Name != null).ToList();

                //ViewBag.NewNetworkID = xmlnetwork.ID;

            }

            ViewBag.Alert = "Upload successful";
            ViewBag.AlertClass = "alert-success";

            return RedirectToAction("Report", new { id = patientID });
            //return View("Report", pvm);
        }
        public ActionResult Index()
        {
            var nvm = new PatientListViewModel();

            using(var c = new DataModelContext())
            {
                nvm.Patients = c.Patients.Include("Therapist").Where(n => n.LastName != null).ToList();
            }

            object alertObject;
            if(TempData.TryGetValue("Alert", out alertObject))
            {
                ViewBag.Alert = alertObject;
            }

            return View(nvm);
        }
        public ActionResult EditPatient(DateTime PatientBirthday, string PatientGender, double PatientHeight, 
			double PatientWeight, string PatientDoctor,	string PatientCity, string PatientEmail, string PatientPhoneNumber, 
			PatientViewModel model)
        {
            var pvm = new PatientViewModel();
            long patientID = 0;

            using (var c = new DataModelContext())
            {
                var patient = c.Patients.Find(model.ID);
                patientID = patient.ID;

                patient.Birthday = PatientBirthday;
                patient.Gender = PatientGender;
                patient.Height = PatientHeight;
                patient.Weight = PatientWeight;
                patient.Doctor = PatientDoctor;
                patient.City = PatientCity;
                patient.Email = PatientEmail;
                patient.PhoneNumber = PatientPhoneNumber;

                DateTime today = DateTime.Today;
                int age = today.Year - PatientBirthday.Year;
                if (PatientBirthday > today.AddYears(-age)) age--;
                patient.Age = age;

                c.SaveChanges();

            }

            ViewBag.Alert = "Profile update successful";
            ViewBag.AlertClass = "alert-success";
            //return View("View", pvm);
            return RedirectToAction("View", new { id = patientID});
        }
        public ActionResult EditMedicalProfile(string PatientCurrentMeds, string PatientHeartDisease, string PPatientHeartDisease,
			string PatientDiabetes, string PPatientDiabetes, string PatientCancer, 
			string PPatientCancer, string PatientHighBloodPressure, string PPatientHighBloodPressure,
			PatientViewModel model)
        {
            var pvm = new PatientViewModel();
            long patientID = 0;

            using (var c = new DataModelContext())
            {
                var patient = c.Patients.Find(model.ID);
                patientID = patient.ID;

                patient.MedProfile.CurrentMeds = new List<string>(
                    PatientCurrentMeds.Split(new string[] { "\r\n" },
                    StringSplitOptions.RemoveEmptyEntries));

                //Setting Current Conditions
                if (PatientHeartDisease == "Current")
                {
                    patient.MedProfile.HeartDisease = true;
                }
                else
                {
                    patient.MedProfile.HeartDisease = false;
                }
                if (PatientDiabetes == "Current")
                {
                    patient.MedProfile.Diabetes = true;
                }
                else
                {
                    patient.MedProfile.Diabetes = false;
                }
                if (PatientCancer == "Current")
                {
                    patient.MedProfile.Cancer = true;
                }
                else
                {
                    patient.MedProfile.Cancer = false;
                }
                if (PatientHighBloodPressure == "Current")
                {
                    patient.MedProfile.HighBloodPressure = true;
                }
                else
                {
                    patient.MedProfile.HighBloodPressure = false;
                }
                //Setting Past Conditions
                if (PPatientHeartDisease == "Past")
                {
                    patient.MedProfile.PHeartDisease = true;
                }
                else
                {
                    patient.MedProfile.PHeartDisease = false;
                }
                if (PPatientDiabetes == "Past")
                {
                    patient.MedProfile.PDiabetes = true;
                }
                else
                {
                    patient.MedProfile.PDiabetes = false;
                }
                if (PPatientCancer == "Past")
                {
                    patient.MedProfile.PCancer = true;
                }
                else
                {
                    patient.MedProfile.PCancer = false;
                }
                if (PPatientHighBloodPressure == "Past")
                {
                    patient.MedProfile.PHighBloodPressure = true;
                }
                else
                {
                    patient.MedProfile.PHighBloodPressure = false;
                }

                c.SaveChanges();

            }

            ViewBag.Alert = "Profile update successful";
            ViewBag.AlertClass = "alert-success";
            //return View("View", pvm);
            return RedirectToAction("View", new { id = patientID });
        }
 public ActionResult SaveNetworkAs(NetworkViewModel model)
 {
     using (var c = new DataModelContext())
     {
         var net = c.Networks.Find(model.ID);
         net.Name = model.Name;
         net.LastEdit = DateTime.Now;
         c.SaveChanges();
     }
     return TempEdit(model.ID, 0);
 }
        public ActionResult Upload(string NetworkName, IEnumerable<HttpPostedFileBase> files)
        {
            var nvm = new NetworkListViewModel();

            IEnumerable<HttpPostedFileBase> someFiles = files;

            var networkDoc = new XDocument();

            if(NetworkName == "")
            {
                ViewBag.UploadAlert = "Enter a network name";

                using (var c = new DataModelContext())
                {
                    nvm.Networks = c.Networks.Include("Author").Where(n => n.Name != null).ToList();
                }
                return View("Index", nvm);
            }

            try
            {
                networkDoc = XDocument.Load(Request.Files["NetworkFile"].InputStream);
            }
            catch (XmlException e)
            {
                Console.WriteLine(e.Message);
                ViewBag.UploadAlert = "You must select a valid xml file";

                using (var c = new DataModelContext())
                {
                    nvm.Networks = c.Networks.Include("Author").Where(n => n.Name != null).ToList();
                }
                return View("Index", nvm);
            }

            using(var c = new DataModelContext())
            {

                var xmlE = new XmlEngine();
                var xmlnetwork = xmlE.XmlFileToNetwork(networkDoc);

                xmlnetwork.Name = NetworkName;
                xmlnetwork.Author = UserDataEngine.getInstance().GetCurrentUser(c, HttpContext);
                xmlnetwork.LastEdit = DateTime.Now;
                c.Networks.Add(xmlnetwork);

                try
                {
                    c.SaveChanges();
                }
                catch(DbEntityValidationException e)
                {
                    foreach(var i in e.EntityValidationErrors)
                    {
                        Console.WriteLine(i.ValidationErrors);
                    }
                    throw e;
                }
                nvm.Networks = c.Networks.Include("Author").Where(n => n.Name != null).ToList();

                ViewBag.NewNetworkID = xmlnetwork.ID;
            }

            ViewBag.Alert = "Network upload successful";
            ViewBag.AlertClass = "alert-success";
            return View("Index", nvm);
        }
        public ActionResult TempEdit(long id, int clickTab)
        {
            Network newNetwork;
            int tab = 0;
            tab = clickTab;
            using(var c = new DataModelContext())
            {
                var originalNetwork = c.Networks.Find(id);

                newNetwork = (Network)originalNetwork.Clone();
                newNetwork.Author = UserDataEngine.getInstance().GetCurrentUser(c, HttpContext);
                newNetwork.LastEdit = DateTime.Now;
                newNetwork.Parent = originalNetwork;
                newNetwork.Revision = originalNetwork.Revision + 1;

                c.Networks.Add(newNetwork);
                c.SaveChanges();
            }

            ViewBag.ID = newNetwork.ID;

            return RedirectToAction("View", new { id = newNetwork.ID, tab = tab });
        }
        public JsonResult SetExpansionData(int id, int? maxExp, int? costPerCar, bool node)
        {
            using(var c = new DataModelContext())
            {
                Optimization opt;

                ExpansionParameters p;
                if(node)
                {
                    opt = c.Optimizations
                        .Include("OptimizedNetwork")
                        .FirstOrDefault(o => o.Nodes.Count(n => n.ID == id) > 0);
                    p = c.NodesOptimized.Find(id).Expansion;
                }
                else
                {
                    opt = c.Optimizations
                        .Include("OptimizedNetwork")
                        .FirstOrDefault(o => o.Links.Count(n => n.ID == id) > 0);
                    p = c.LinksOptimized.Find(id).Expansion;
                }
                opt.OutOfDate = true;

                // If maxExp is -1, set to null. Otherwise, set to the given value.
                if(maxExp != null)
                    p.CapacityExpansionMaxPossible = maxExp == -1 ? null : maxExp;
                if(costPerCar != null)
                    p.CapacityExpansionCostPerUnit = costPerCar == -1 ? null : costPerCar;

                c.SaveChanges();
            }
            return Json(new { success=true }, JsonRequestBehavior.AllowGet);
        }
        public JsonResult SetDefaultExpansionData(
			int id,
			int? maxNodeExp,
			int? nodeCostPer,
			int? maxLinkExp,
			int? linkCostPer)
        {
            using(var c = new DataModelContext())
            {
                var opt = c.Optimizations
                    .Include("OptimizedNetwork")
                    .FirstOrDefault(o => o.ID == id);

                if(maxNodeExp != null)
                    opt.DefaultNodeExpansion.CapacityExpansionMaxPossible = maxNodeExp;
                if(nodeCostPer != null)
                    opt.DefaultNodeExpansion.CapacityExpansionCostPerUnit = nodeCostPer;
                if(maxLinkExp != null)
                    opt.DefaultLinkExpansion.CapacityExpansionMaxPossible = maxLinkExp;
                if(linkCostPer != null)
                    opt.DefaultLinkExpansion.CapacityExpansionCostPerUnit = linkCostPer;

                opt.OutOfDate = true;

                try
                {
                    c.SaveChanges();
                }
                catch(DbEntityValidationException e)
                {
                    var eve = e.EntityValidationErrors;
                    throw e;
                }
            }
            return Json(new { success=true }, JsonRequestBehavior.AllowGet);
        }
        public ActionResult CreateBlank(string PatientFirstName, string PatientLastName, 
			DateTime PatientBirthday, string PatientGender, int PatientFeet, int PatientInches,
			double PatientWeight, string PatientDoctor, string PatientArthritisType, 
			string PatientAffectedExtremity, string PatientDeformity, string PatientCity,
			string PatientPhoneNumber, string PatientEmail)
        {
            var nvm = new PatientListViewModel();

            if(PatientFirstName == "")
            {
                ViewBag.UploadAlert = "Enter the patient's first name";

                using (var c = new DataModelContext())
                {
                    nvm.Patients = c.Patients.Include("Therapist").Where(n => n.LastName != null).ToList();
                }
                return View("Index", nvm);
            }

            if (PatientLastName == "")
            {
                ViewBag.UploadAlert = "Enter the patient's last name";

                using (var c = new DataModelContext())
                {
                    nvm.Patients = c.Patients.Include("Therapist").Where(n => n.LastName != null).ToList();
                }
                return View("Index", nvm);
            }

            using(var c = new DataModelContext())
            {
                var patient = new Patient();
                patient.ReportResult = ReportEngine.getInstance().GenerateReport(patient);
                patient.MedProfile = new MedProfile();

                patient.FirstName = PatientFirstName;
                patient.LastName = PatientLastName;
                patient.Therapist = UserDataEngine.getInstance().GetCurrentUser(c, HttpContext);
                patient.LastUpdate = DateTime.Now;
                patient.Start = DateTime.Now;
                patient.Birthday = PatientBirthday;
                patient.Gender = PatientGender;
                patient.Height = (PatientFeet * 12) + PatientInches;
                patient.Weight = PatientWeight;
                patient.Doctor = PatientDoctor;
                patient.ArthritisType = PatientArthritisType;
                patient.AffectedExtremity = PatientAffectedExtremity;
                patient.Deformity = PatientDeformity;
                patient.ShankLength = 0;
                patient.ThighLength = 0;
                patient.PhoneNumber = PatientPhoneNumber;
                patient.Email = PatientEmail;
                patient.City = PatientCity;
                patient.ContactName = "Not entered";
                patient.ContactRelation = "Not entered";
                patient.ContactPhoneNumber = "Not entered";
                patient.ContactEmail = "Not entered";

                DateTime today = DateTime.Today;
                int age = today.Year - PatientBirthday.Year;
                if (PatientBirthday > today.AddYears(-age)) age--;
                patient.Age = age;

                c.Patients.Add(patient);

                try
                {
                    c.SaveChanges();
                }
                catch(DbEntityValidationException e)
                {
                    foreach(var i in e.EntityValidationErrors)
                    {
                        Console.WriteLine(i.ValidationErrors);
                    }
                    throw e;
                }
                nvm.Patients = c.Patients.Include("Therapist").Where(n => n.LastName != null).ToList();

                ViewBag.NewPatientID = patient.ID;
            }

            ViewBag.Alert = "Patient upload successful";
            ViewBag.AlertClass = "alert-success";
            return View("Index", nvm);
        }
        //
        // GET: /Account/
        //public ActionResult Index()
        //{
        //    return View(new LoginModel());
        //}
        public ActionResult Index(LoginModel model, string returnUrl)
        {
            // If the user hasn't tried to log in yet, let them try.
            if(model.Username == null)
                return View(model);

            using(DataModelContext ctx = new DataModelContext())
            {
                foreach(var u in ctx.Users.Where(u => u.Username == model.Username))
                {
                    byte[] salt = u.PasswordSalt;

                    byte[] hash = GenerateSaltedHash(
                        System.Text.Encoding.UTF8.GetBytes(model.Password), salt);

                    if(u.PasswordHash.SequenceEqual(hash))
                    {
                        FormsAuthentication.SetAuthCookie(model.Username, false);
                        if(returnUrl != null)
                            return Redirect(returnUrl);
                        return RedirectToAction("Index", "Home");
                    }
                }
                ModelState.AddModelError("result", "Incorrect username or password. Try again.");
            }
            return View(model);
        }
        public ActionResult EditRequired(double PatientShankLength, double PatientThighLength, PatientViewModel model)
        {
            var pvm = new PatientViewModel();
            long patientID = 0;

            using (var c = new DataModelContext())
            {
                var patient = c.Patients.Find(model.ID);
                patientID = patient.ID;
                patient.ShankLength = PatientShankLength;
                patient.ThighLength = PatientThighLength;

                c.SaveChanges();

            }

            ViewBag.Alert = "Profile update successful";
            ViewBag.AlertClass = "alert-success";
            //return View("View", pvm);
            return RedirectToAction("Report", new { id = patientID });
        }
        public JsonResult removeLink(NetworkViewModel model)
        {
            killOptimization(model.ID);
            ICollection<Link> linkArray = new List<Link>();

            using(var c = new DataModelContext())
            {
                var net = c.Networks.Find(model.ID);

                foreach(Link l in net.Links)
                {

                    if(l.From.StationCode == model.NewLink.From.StationCode &&
                        l.To.StationCode == model.NewLink.To.StationCode)
                    {
                        linkArray.Add(l);
                    }

                    if (!model.IsOneDirectional)
                    {
                        if (l.To.StationCode == model.NewLink.From.StationCode &&
                            l.From.StationCode == model.NewLink.To.StationCode)
                        {
                            linkArray.Add(l);
                        }
                    }

                }

                foreach(Link l in linkArray)
                {
                    net.Links.Remove(l);
                }

                net.LastEdit = DateTime.Now;
                c.SaveChanges();
            }
            return Json(new { success=true });
        }
        public ActionResult Report(long id)
        {
            var nvm = new PatientViewModel();

            using (var c = new DataModelContext())
            {
                User currentUser = UserDataEngine.getInstance().GetCurrentUser(c, HttpContext);

                var patient = c.Patients.Find(id);
                if (patient == null)
                {
                    TempData["Alert"] = "The selected patient does not exist.";
                    return RedirectToAction("Index");
                }

                nvm.ID = patient.ID;
                nvm.FirstName = patient.FirstName;
                nvm.LastName = patient.LastName;
                nvm.Therapist = patient.Therapist;
                nvm.Doctor = patient.Doctor;
                nvm.LastUpdate = patient.LastUpdate;
                nvm.ArthritisType = patient.ArthritisType;
                nvm.AffectedExtremity = patient.AffectedExtremity;
                nvm.Deformity = patient.Deformity;
                nvm.ShankLength = patient.ShankLength;
                nvm.ThighLength = patient.ThighLength;
                nvm.Report = patient.ReportResult;
                nvm.MedProfile = patient.MedProfile;

            }
            return View("Report", nvm);
        }
 public ActionResult OptimizationSidebar(long id, int startTab = 1)
 {
     var osvm = new OptimizationSidebarViewModel();
     osvm.StartTab = startTab;
     using(var c = new DataModelContext())
     {
         var network = c.Networks
             .Include("OptimizationResult")
             .Include("OptimizationResult.Nodes")
             .Include("OptimizationResult.Nodes.Node")
             .Include("OptimizationResult.Links")
             .Include("OptimizationResult.Links.Link")
             .FirstOrDefault(n => n.ID == id);
         osvm.Optimization = network.OptimizationResult;
     }
     return View(osvm);
 }
        public ActionResult View(long id)
        {
            var nvm = new PatientViewModel();

            using(var c = new DataModelContext())
            {
                var patient = c.Patients.Find(id);
                if(patient == null)
                {
                    TempData["Alert"] = "The selected patient does not exist.";
                    return RedirectToAction("Index");
                }

                nvm.ID = patient.ID;
                nvm.FirstName = patient.FirstName;
                nvm.LastName = patient.LastName;
                nvm.Therapist = patient.Therapist;
                nvm.Doctor = patient.Doctor;
                nvm.LastUpdate = patient.LastUpdate;
                nvm.Start = patient.Start;
                nvm.Age = patient.Age;
                nvm.Birthday = patient.Birthday;
                nvm.Gender = patient.Gender;
                nvm.Height = patient.Height;
                nvm.Weight = patient.Weight;
                nvm.ArthritisType = patient.ArthritisType;
                nvm.AffectedExtremity = patient.AffectedExtremity;
                nvm.Deformity = patient.Deformity;
                nvm.ShankLength = patient.ShankLength;
                nvm.ThighLength = patient.ThighLength;
                nvm.Email = patient.Email;
                nvm.PhoneNumber = patient.PhoneNumber;
                nvm.City = patient.City;
                nvm.ContactName = patient.ContactName;
                nvm.ContactRelation = patient.ContactRelation;
                nvm.ContactPhoneNumber = patient.ContactPhoneNumber;
                nvm.ContactEmail = patient.ContactEmail;

                nvm.Report = patient.ReportResult;
                nvm.MedProfile = patient.MedProfile;

                DateTime dateOnly = nvm.Birthday.Date;
                nvm.BirthdayString = dateOnly.ToString("d");

                DateTime dateOnly2 = nvm.Start.Date;
                nvm.StartString = dateOnly2.ToString("d");

                DateTime dateOnly3 = nvm.Birthday.Date;
                nvm.BirthdayHtml = dateOnly3.ToString("yyyy-MM-dd");

                //var nameNet = network;
                //while(nameNet.Parent != null && nameNet.Name == null)
                //	nameNet = nameNet.Parent;
                //nvm.Name = nameNet.Name;

                if(patient.ReportResult == null)
                {
                    nvm.OutOfDate = false;
                    //nvm.Optimized = false;
                }
                else
                {
                    nvm.OutOfDate = patient.ReportResult.OutOfDate;
                    //nvm.Optimized = true;
                }
            }

            return View("View", nvm);
        }
        public JsonResult removeNode(NetworkViewModel model)
        {
            ICollection<Node> nodeArray = new List<Node>();
            ICollection<Link> linkArray = new List<Link>();
            ICollection<Order> orderArray = new List<Order>();
            killOptimization(model.ID);

            using(var c = new DataModelContext())
            {
                foreach(Node n in c.Networks.Find(model.ID).Nodes)
                {
                    if(n.StationCode == model.NewNode.StationCode)
                    {
                        nodeArray.Add(n);
                    }
                }
                foreach(Link l in c.Networks.Find(model.ID).Links)
                {

                    if(l.From.StationCode == model.NewNode.StationCode || l.To.StationCode == model.NewNode.StationCode)
                    {
                        linkArray.Add(l);
                    }

                }
                foreach(Order o in c.Networks.Find(model.ID).Orders)
                {

                    if(o.Origin.StationCode == model.NewNode.StationCode || o.Destination.StationCode == model.NewNode.StationCode)
                    {

                        orderArray.Add(o);
                    }
                }

                var net = c.Networks.Find(model.ID);
                foreach(Node n in nodeArray)
                {
                    net.Nodes.Remove(n);
                }

                foreach(Link l in linkArray)
                {
                    net.Links.Remove(l);
                }

                foreach(Order o in orderArray)
                {
                    net.Orders.Remove(o);
                }
                net.LastEdit = DateTime.Now;

                c.SaveChanges();
            }
            return Json(new { success=true });
        }