Exemple #1
0
        static NutritionalInfo GetNutritionalInfoFor(string courseHtml)
        {
            var info       = new NutritionalInfo();
            var titleMatch = Regex.Match(courseHtml, "(<h1)[^>]*[^</]*");

            if (titleMatch.Success)
            {
                info.Name = titleMatch.Groups[0].Value.Split(">")[1];
            }

            info.Properties = GetInfoProperties(courseHtml);

            return(info);
        }
        protected override Constants.ProcessOutcome Process()
        {
            //eventLog1.WriteEntry("In Importer Process");
            var fileName = String.Format(
                Settings.Default.FileName,
                DateTime.Now.AddDays(Settings.Default.FileNameDateCheckOffsetDays).ToString("yyyyMMdd"));

            importer = new NutritionalInfo(
                Settings.Default.FilePath,
                fileName,
                Settings.Default.StagingTableName,
                Settings.Default.FormatFilePath,
                Settings.Default.ArchivePath,
                Settings.Default.SummaryReportErrorToEmailAddress,
                Settings.Default.SummaryReportFromEmailAddress,
                Settings.Default.SummaryReportFromAddressFriendlyName,
                Settings.Default.SqlaServerPath,
                Settings.Default.SqlbServerPath,
                Settings.Default.LocalSqlPath,
                Settings.Default.TemporaryUploadFolder,
                Settings.Default.DaysToRun);

            return(importer.Process());
        }
        public async Task <ActionResult <JournalEntry> > PostJournalEntry([FromBody] JournalEntryModel entry, [FromQuery] int userId)
        {
            try
            {
                if (entry == null)
                {
                    throw new ArgumentNullException(nameof(entry));
                }

                {
                    try
                    {
                        this.context.Database.BeginTransaction();
                        var userExists = await this.context.Users.AnyAsync(x => x.Id == userId);

                        if (userExists)
                        {
                            var userJournalEntryFromDb = await this.context.UserJournalEntries.FirstOrDefaultAsync(x => x.UserId == userId && x.JournalEntryId == entry.Id);

                            if (userJournalEntryFromDb == null)
                            {
                                userJournalEntryFromDb = new UserJournalEntry();
                            }

                            userJournalEntryFromDb.UserId = userId;

                            var entryFromDb = await this.context.JournalEntries.FirstOrDefaultAsync(x => x.Id == entry.Id);

                            if (entryFromDb == null)
                            {
                                entryFromDb = new JournalEntry();
                            }

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

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

                            userJournalEntryFromDb.JournalEntryId = entry.Id;

                            if (userJournalEntryFromDb.Id == 0)
                            {
                                this.context.UserJournalEntries.Add(userJournalEntryFromDb);
                            }

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

                            if (doseFromDb == null)
                            {
                                doseFromDb = new Dose();
                            }

                            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)
                            {
                                this.context.Doses.Add(doseFromDb);
                                this.context.SaveChanges();
                                entry.Dose.Id = doseFromDb.Id;
                            }

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

                            if (entryDoseFromDb == null)
                            {
                                entryDoseFromDb = new JournalEntryDose();

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

                                this.context.JournalEntryDoses.Add(entryDoseFromDb);
                            }

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

                            if (nutritionalInfoFromDb == null)
                            {
                                nutritionalInfoFromDb = new NutritionalInfo();
                            }

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

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

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

                            if (entryNutritionalInfoFromDb == null)
                            {
                                entryNutritionalInfoFromDb = new JournalEntryNutritionalInfo();

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

                                this.context.JournalEntryNutritionalInfos.Add(entryNutritionalInfoFromDb);
                            }

                            var journalEntryTagsFromDb = this.context.JournalEntryTags.Where(x => x.JournalEntryId == entryFromDb.Id);
                            foreach (var dbTag in journalEntryTagsFromDb.ToList())
                            {
                                if (entry.Tags.Where(x => x.Id == dbTag.TagId).Any() == false)
                                {
                                    this.context.Remove(dbTag);
                                    this.context.SaveChanges();
                                }
                            }

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

                                if (tagFromDb == null)
                                {
                                    tagFromDb = new Tag();
                                }

                                tagFromDb.Description = tag.Description;

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

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

                                if (journalEntryTagFromDb == null)
                                {
                                    journalEntryTagFromDb = new JournalEntryTag();

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

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

                return(CreatedAtAction("GetJournalEntry", new { id = entry.Id }, 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));
                }
            }
        }