Example #1
0
        public void UpdateDrugs(PatientDrug[] drugs, Patient patientToUpdate, HttpRequest request)
        {
            for (var cursor = 0; cursor < drugs.Length; cursor++)
            {
                PatientDrug drug = drugs[cursor];
                if (drug.ID == 0)
                {
                    drug.PatientId = patientToUpdate.ID;
                    string[] sideEffectsIDs = request.Form["Drugs[" + cursor + "].SideEffects"];

                    var sideEffectsItems = _context.SideEffects.Where(se => sideEffectsIDs.Contains(se.ID.ToString()));
                    foreach (var sideEffect in sideEffectsItems)
                    {
                        PatientDrugSideEffect drugSideEffect = new PatientDrugSideEffect();
                        drugSideEffect.PatientDrug = drugs[cursor];
                        drugSideEffect.SideEffect  = sideEffect;
                        drugs[cursor].SideEffects.Add(drugSideEffect);
                    }
                    _context.Update(drug);
                }
                else
                {
                    //var drugToUpdate = patientToUpdate.PatientDrugs.SingleOrDefault(pd => pd.ID == drug.ID);
                    string[] sideEffectsIDs = request.Form["Drugs[" + cursor + "].SideEffects"];
                    var      drugToUpdate   = _context.PatientDrugs.Include(pd => pd.SideEffects).
                                              SingleOrDefault(pd => pd.ID == drug.ID);

                    var sideEffectsItems  = _context.SideEffects.Where(se => sideEffectsIDs.Contains(se.ID.ToString()));
                    var uiSelectedIds     = sideEffectsIDs.Select(int.Parse).ToList();
                    var toDeleteEffectIds = drugToUpdate.SelectedEffectsIds.Except(uiSelectedIds);
                    var toInsertEffectIds = uiSelectedIds.Except(drugToUpdate.SelectedEffectsIds);

                    if (toDeleteEffectIds.Count() > 0)
                    {
                        _context.PatientDrugSideEffects.
                        RemoveRange(_context.PatientDrugSideEffects.
                                    Where(pdse => toDeleteEffectIds.Contains(pdse.SideEffectId) && pdse.PatientDrugId == drugToUpdate.ID));
                    }

                    if (toInsertEffectIds.Count() > 0)
                    {
                        var sideEffectsNewItems = _context.SideEffects.Where(se => toInsertEffectIds.Contains(se.ID));
                        foreach (var sideEffect in sideEffectsNewItems)
                        {
                            PatientDrugSideEffect drugSideEffect = new PatientDrugSideEffect();
                            drugSideEffect.PatientDrug = drugs[cursor];
                            drugSideEffect.SideEffect  = sideEffect;
                            drugToUpdate.SideEffects.Add(drugSideEffect);
                        }
                    }
                    drugToUpdate.StartDate = drug.StartDate;
                    drugToUpdate.EndDate   = drug.EndDate;
                    drugToUpdate.DrugId    = drug.DrugId;
                    _context.Update(drugToUpdate);
                }
            }
        }
Example #2
0
 private void AddSideEffectsToDrugs(PatientDrug[] drugs)
 {
     for (var cursor = 0; cursor < Request.Form["Drugs.index"].ToList().Count; cursor++)
     {
         string stringIndex    = Request.Form["Drugs.index"][cursor];
         string sideEffectsIds = Request.Form["Drugs[" + stringIndex + "].SideEffects"];
         var    sideEffects    = _context.SideEffects.Where(se => sideEffectsIds.Contains(se.ID.ToString()));
         foreach (var sideEffect in sideEffects)
         {
             PatientDrugSideEffect drugSideEffect = new PatientDrugSideEffect();
             drugSideEffect.PatientDrug = drugs[cursor];
             drugSideEffect.SideEffect  = sideEffect;
             drugs[cursor].SideEffects.Add(drugSideEffect);
         }
     }
 }