Пример #1
0
        public static async Task SaveUser(User user, List <Condition> conditions, List <Medication> medications)
        {
            var conditionsToDelete = user.UserConditions.Where(o => o.Deleted != null);

            foreach (var con in conditionsToDelete)
            {
                Context.UpdateObject(con);
            }

            if (conditions.Count > 0)
            {
                foreach (var con in conditions)
                {
                    var userCondition = user.UserConditions.Where(o => o.ConditionId == con.Id).FirstOrDefault();
                    if (userCondition == null)
                    {
                        userCondition = new UserCondition
                        {
                            User_Id     = user.user_id,
                            ConditionId = con.Id,
                            Created     = DateTime.Now,
                            CreatedBy   = user.username,
                            Updated     = DateTime.Now,
                            UpdatedBy   = user.username
                        };
                        Context.AddObject("UserConditions", userCondition);
                    }
                    else
                    {
                        userCondition.Deleted   = null;
                        userCondition.DeletedBy = null;
                        Context.UpdateObject(userCondition);
                    }
                }
            }

            var medsToDelete = user.UserMedications.Where(o => o.Deleted != null);

            foreach (var med in medsToDelete)
            {
                Context.UpdateObject(med);
            }

            if (medications.Count > 0)
            {
                foreach (var med in medications)
                {
                    var userMed = user.UserMedications.Where(o => o.MedicationId == med.Id).FirstOrDefault();

                    if (userMed == null)
                    {
                        userMed = new UserMedication
                        {
                            User_Id      = user.user_id,
                            MedicationId = med.Id,
                            Created      = DateTime.Now,
                            CreatedBy    = user.username,
                            Updated      = DateTime.Now,
                            UpdatedBy    = user.username
                        };
                        Context.AddObject("UserMedications", userMed);
                    }
                    else
                    {
                        userMed.Deleted   = null;
                        userMed.DeletedBy = null;
                        Context.UpdateObject(userMed);
                    }
                }
            }

            user.Updated   = DateTime.Now;
            user.UpdatedBy = user.username;

            Context.UpdateObject(user);
            Context.BeginSaveChanges(null, null);
        }
 public IHttpActionResult Delete(UserMedication medication)
 {
     db.DeleteUserMedication(medication.UserMedicationId);
     return(Ok());
 }
Пример #3
0
        public static async Task SaveUser(User user, string conditions, string medications)
        {
            //var userConditions = new DataServiceCollection<UserCondition>(Context);
            if (conditions.Length > 0)
            {
                var condArray = conditions.Split(';');
                var condList  = SuspensionManager.SessionState["UserConditions"] as List <string>;
                foreach (var con in condArray)
                {
                    if (con.Trim().Length > 0)
                    {
                        var c = await GetConditionByName(con.Trim());

                        if (c != null)
                        {
                            var userCondition = new UserCondition
                            {
                                User_Id     = user.user_id,
                                ConditionId = c.Id
                            };
                            if (user.UserConditions.Where(o => o.ConditionId == userCondition.ConditionId).FirstOrDefault() == null)
                            {
                                Context.AddObject("UserConditions", userCondition);
                            }

                            if (!condList.Contains(c.Name))
                            {
                                condList.Add(c.Name);
                            }
                        }
                    }
                }
                SuspensionManager.SessionState["UserConditions"] = condList;
                var conditionsToRemove = user.UserConditions.Where(o => !condArray.Contains(o.Condition.Name));
                foreach (var condition in conditionsToRemove)
                {
                    user.UserConditions.Remove(condition);
                }
            }
            else
            {
                user.UserConditions.Clear();
                SuspensionManager.SessionState["UserConditions"] = null;
            }

            //var userMeds = new DataServiceCollection<UserMedication>();
            if (medications.Length > 0)
            {
                var medArray = medications.Split(';');
                var medList  = SuspensionManager.SessionState["UserMedications"] as List <string>;
                foreach (var med in medArray)
                {
                    if (med.Length > 0)
                    {
                        var m = await GetMedicationByName(med);

                        if (m != null)
                        {
                            var userMedication = new UserMedication
                            {
                                User_Id      = user.user_id,
                                MedicationId = m.Id
                            };
                            if (user.UserMedications.Where(o => o.MedicationId == userMedication.MedicationId).FirstOrDefault() == null)
                            {
                                Context.AddObject("UserMedications", userMedication);
                            }

                            if (!medList.Contains(m.Name))
                            {
                                medList.Add(m.Name);
                            }
                        }
                    }
                }

                SuspensionManager.SessionState["UserMedications"] = medList;

                var medsToRemove = user.UserMedications.Where(o => !medArray.Contains(o.Medication.Name));
                foreach (var med in medsToRemove)
                {
                    user.UserMedications.Remove(med);
                }
            }
            else
            {
                user.UserMedications.Clear();
                SuspensionManager.SessionState["UserMedications"] = null;
            }

            user.Updated   = DateTime.Now;
            user.UpdatedBy = user.username;

            Context.UpdateObject(user);
            Context.BeginSaveChanges(null, null);
        }