Exemple #1
0
        public IHttpActionResult RemoveJournalEntryTag(int journalEntryTagId)
        {
            using (var db = new DiabetesFoodJournalContext())
            {
                var journalEntryTagFromDb = db.JournalEntryTags.FirstOrDefault(x => x.Id == journalEntryTagId);

                if (journalEntryTagFromDb != null)
                {
                    db.JournalEntryTags.Remove(journalEntryTagFromDb);
                    db.SaveChanges();
                }
            }

            return(Ok());
        }
Exemple #2
0
        public IHttpActionResult SearchTags(string searchValue)
        {
            var upperSearchValue = searchValue.ToUpper();
            var retVal           = new List <JournalEntryModel>();

            try
            {
                using (var db = new DiabetesFoodJournalContext())
                {
                    var results = db.Tags.AsNoTracking().Where(entry => entry.Description.ToUpper().Contains(upperSearchValue));

                    return(Ok(results.Take(10).ToList()));
                }
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }
Exemple #3
0
        public IHttpActionResult SaveJournalEntry([FromBody] JournalEntryModel entry)
        {
            try
            {
                if (entry == null)
                {
                    throw new ArgumentNullException(nameof(entry));
                }

                using (var db = new DiabetesFoodJournalContext())
                {
                    try
                    {
                        db.Database.BeginTransaction();
                        var entryFromDb = db.JournalEntries.FirstOrDefault(x => x.Id == entry.Id);

                        if (entryFromDb == null)
                        {
                            entryFromDb = db.JournalEntries.Create();
                        }

                        entryFromDb.Logged = entry.Logged;
                        entryFromDb.Notes  = entry.Notes ?? "";
                        entryFromDb.Title  = entry.Title;

                        if (entryFromDb.Id == 0)
                        {
                            db.JournalEntries.Add(entryFromDb);
                            db.SaveChanges();
                            entry.Id = entryFromDb.Id;
                        }

                        var doseFromDb = db.Doses.FirstOrDefault(x => x.Id == entry.Dose.Id);

                        if (doseFromDb == null)
                        {
                            doseFromDb = db.Doses.Create();
                        }

                        doseFromDb.Extended      = entry.Dose.Extended;
                        doseFromDb.InsulinAmount = entry.Dose.InsulinAmount;
                        doseFromDb.TimeExtended  = entry.Dose.TimeExtended;
                        doseFromDb.TimeOffset    = entry.Dose.TimeOffset;
                        doseFromDb.UpFront       = entry.Dose.UpFront;

                        if (doseFromDb.Id == 0)
                        {
                            db.Doses.Add(doseFromDb);
                            db.SaveChanges();
                            entry.Dose.Id = doseFromDb.Id;
                        }

                        var entryDoseFromDb = db.JournalEntryDoses.FirstOrDefault(x => x.JournalEntryId == entryFromDb.Id && x.DoseId == doseFromDb.Id);

                        if (entryDoseFromDb == null)
                        {
                            entryDoseFromDb = db.JournalEntryDoses.Create();

                            entryDoseFromDb.JournalEntryId = entryFromDb.Id;
                            entryDoseFromDb.DoseId         = doseFromDb.Id;

                            db.JournalEntryDoses.Add(entryDoseFromDb);
                        }

                        var nutritionalInfoFromDb = db.NutritionalInfos.FirstOrDefault(x => x.Id == entry.NutritionalInfo.Id);

                        if (nutritionalInfoFromDb == null)
                        {
                            nutritionalInfoFromDb = db.NutritionalInfos.Create();
                        }

                        nutritionalInfoFromDb.Protein       = entry.NutritionalInfo.Protein;
                        nutritionalInfoFromDb.Calories      = entry.NutritionalInfo.Calories;
                        nutritionalInfoFromDb.Carbohydrates = entry.NutritionalInfo.Carbohydrates;

                        if (nutritionalInfoFromDb.Id == 0)
                        {
                            db.NutritionalInfos.Add(nutritionalInfoFromDb);
                            db.SaveChanges();
                            entry.NutritionalInfo.Id = nutritionalInfoFromDb.Id;
                        }

                        var entryNutritionalInfoFromDb = db.JournalEntryNutritionalInfos.FirstOrDefault(x => x.JournalEntryId == entryFromDb.Id && x.NutritionalInfoId == nutritionalInfoFromDb.Id);

                        if (entryNutritionalInfoFromDb == null)
                        {
                            entryNutritionalInfoFromDb = db.JournalEntryNutritionalInfos.Create();

                            entryNutritionalInfoFromDb.JournalEntryId    = entryFromDb.Id;
                            entryNutritionalInfoFromDb.NutritionalInfoId = nutritionalInfoFromDb.Id;

                            db.JournalEntryNutritionalInfos.Add(entryNutritionalInfoFromDb);
                        }

                        foreach (var tag in entry.Tags)
                        {
                            var tagFromDb = db.Tags.FirstOrDefault(x => x.Id == tag.Id);

                            if (tagFromDb == null)
                            {
                                tagFromDb = db.Tags.Create();
                            }

                            tagFromDb.Description = tag.Description;

                            if (tagFromDb.Id == 0)
                            {
                                db.Tags.Add(tagFromDb);
                                db.SaveChanges();
                            }

                            var journalEntryTagFromDb = db.JournalEntryTags.FirstOrDefault(x => x.JournalEntryId == entryFromDb.Id && x.TagId == tagFromDb.Id);

                            if (journalEntryTagFromDb == null)
                            {
                                journalEntryTagFromDb = db.JournalEntryTags.Create();

                                journalEntryTagFromDb.JournalEntryId = entryFromDb.Id;
                                journalEntryTagFromDb.TagId          = tagFromDb.Id;
                                db.JournalEntryTags.Add(journalEntryTagFromDb);
                            }
                        }

                        db.SaveChanges();
                        db.Database.CurrentTransaction.Commit();
                    }
                    catch (Exception e)
                    {
                        db.Database.CurrentTransaction.Rollback();
                        if (e.InnerException != null)
                        {
                            return(BadRequest(e.InnerException.Message));
                        }
                        else
                        {
                            return(BadRequest(e.Message));
                        }
                    }
                }

                return(Ok(entry));
            }
            catch (ArgumentNullException e)
            {
                return(BadRequest(e.Message));
            }
            catch (Exception e)
            {
                if (e.InnerException != null)
                {
                    return(BadRequest(e.InnerException.Message));
                }
                else
                {
                    return(BadRequest(e.Message));
                }
            }
        }
Exemple #4
0
        public IHttpActionResult SaveTag([FromBody] Tag tag)
        {
            try
            {
                if (tag == null)
                {
                    throw new ArgumentNullException(nameof(tag));
                }

                using (var db = new DiabetesFoodJournalContext())
                {
                    try
                    {
                        var tagFromDb = db.Tags.FirstOrDefault(x => x.Id == tag.Id);

                        if (tagFromDb == null)
                        {
                            tagFromDb = db.Tags.Create();
                        }

                        tagFromDb.Description = tag.Description;

                        if (tag.Id == 0)
                        {
                            db.Tags.Add(tagFromDb);
                        }

                        db.SaveChanges();
                        tag.Id = tagFromDb.Id;
                    }
                    catch (Exception e)
                    {
                        db.Database.CurrentTransaction.Rollback();
                        if (e.InnerException != null)
                        {
                            return(BadRequest(e.InnerException.Message));
                        }
                        else
                        {
                            return(BadRequest(e.Message));
                        }
                    }
                }

                return(Ok(tag.Id));
            }
            catch (ArgumentNullException e)
            {
                return(BadRequest(e.Message));
            }
            catch (Exception e)
            {
                if (e.InnerException != null)
                {
                    return(BadRequest(e.InnerException.Message));
                }
                else
                {
                    return(BadRequest(e.Message));
                }
            }
        }
Exemple #5
0
        public IHttpActionResult SearchJournal(string searchValue)
        {
            var upperSearchValue = searchValue.ToUpper();
            var retVal           = new List <JournalEntryModel>();

            try
            {
                using (var db = new DiabetesFoodJournalContext())
                {
                    var results = db.JournalEntries.AsNoTracking().Where(entry => entry.Title.ToUpper().Contains(upperSearchValue))
                                  .Include(x => x.JournalEntryNutritionalInfos.Select(y => y.NutritionalInfo))
                                  .Include(x => x.JournalEntryDoses.Select(y => y.Dose))
                                  .Include(x => x.JournalEntryTags.Select(y => y.Tag));

                    if (results.Any())
                    {
                        foreach (var result in results)
                        {
                            var currentEntry = new JournalEntryModel();
                            currentEntry.Tags   = new List <TagModel>();
                            currentEntry.Id     = result.Id;
                            currentEntry.Logged = result.Logged;
                            currentEntry.Notes  = result.Notes;
                            currentEntry.Title  = result.Title;

                            if (result.JournalEntryNutritionalInfos != null && result.JournalEntryNutritionalInfos.Any())
                            {
                                var nutrition = result.JournalEntryNutritionalInfos.FirstOrDefault().NutritionalInfo;
                                if (nutrition.Id > 0)
                                {
                                    currentEntry.NutritionalInfo               = new NutritionalInfoModel();
                                    currentEntry.NutritionalInfo.Id            = nutrition.Id;
                                    currentEntry.NutritionalInfo.Calories      = nutrition.Calories;
                                    currentEntry.NutritionalInfo.Carbohydrates = nutrition.Carbohydrates;
                                    currentEntry.NutritionalInfo.Protein       = nutrition.Protein;
                                }
                            }

                            if (result.JournalEntryDoses != null && result.JournalEntryDoses.Any())
                            {
                                var dose = result.JournalEntryDoses.FirstOrDefault().Dose;
                                if (dose.Id > 0)
                                {
                                    currentEntry.Dose               = new DoseModel();
                                    currentEntry.Dose.Id            = dose.Id;
                                    currentEntry.Dose.Extended      = dose.Extended;
                                    currentEntry.Dose.InsulinAmount = dose.InsulinAmount;
                                    currentEntry.Dose.TimeExtended  = dose.TimeExtended;
                                    currentEntry.Dose.TimeOffset    = dose.TimeOffset;
                                    currentEntry.Dose.UpFront       = dose.UpFront;
                                }
                            }


                            if (result.JournalEntryTags != null && result.JournalEntryTags.Any())
                            {
                                foreach (var tag in result.JournalEntryTags)
                                {
                                    var tagViewModel = new TagModel();
                                    tagViewModel.Id          = tag.Tag.Id;
                                    tagViewModel.Description = tag.Tag.Description;
                                    currentEntry.Tags.Add(tagViewModel);
                                }
                            }

                            retVal.Add(currentEntry);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }

            return(Ok(retVal.Take(100)));
        }