public async Task <ResponseMessage> SaveODF([FromBody] ODF odf)
        {
            try
            {
                if (odf.Id == null)
                {
                    odf.CreatedBy   = LoginUser.Name;
                    odf.CreatedDate = DateTime.UtcNow;
                }

                odf.UpdatedBy   = LoginUser.Name;
                odf.UpdatedDate = DateTime.UtcNow;

                var savedODF = await _odfService.SaveODF(odf);

                if (savedODF == null)
                {
                    return new ResponseMessage {
                               Status = "Error", Message = "Error saving odf."
                    }
                }
                ;

                return(new ResponseMessage {
                    Status = "Ok", Data = savedODF
                });
            }
            catch (Exception ex)
            {
                _logger?.LogError(ex, "Error saving odf.");
                return(new ResponseMessage {
                    Status = "Error", Message = "Error saving odf."
                });
            }
        }
Beispiel #2
0
        public ODF Run(Prescription prescription)
        {
            float length = m_config.GetValue <float>("OdfSettings:Length");
            float width  = m_config.GetValue <float>("OdfSettings:Width");
            float height = m_config.GetValue <float>("OdfSettings:Height");

            Patient patient = prescription.Patient;
            string  label   = CreateLabel(patient.FirstName, patient.LastName);
            float   density = CalculateDensity(prescription.Dosage);
            Guid    id      = Guid.NewGuid();

            ODF odf = new ODF();

            /*  {
             *    Length = length,
             *    Width = width,
             *    Height = height,
             *    Label = label,
             *    DrugName = prescription.Drug,
             *    Density = density,
             *    Id = id.ToString()
             * };*/

            return(odf);
        }
Beispiel #3
0
        private void saveToolStripMenuItem_Click(object sender, EventArgs e)
        {
            List <ODF_Char> Characters = new List <ODF_Char>();
            List <OCC_Char> Colors     = new List <OCC_Char>();
            List <OCO_Char> Costumes   = new List <OCO_Char>();
            List <OCS_Char> Skills     = new List <OCS_Char>();
            List <OCP_Char> Parameters = new List <OCP_Char>();
            List <OCT_Char> Talismans  = new List <OCT_Char>();

            for (int i = 0; i < partners.Count; i++)
            {
                ODF_Char n1 = new ODF_Char();
                n1.id   = partners[i].id;
                n1.data = partners[i].character;
                Characters.Add(n1);

                OCC_Char n2 = new OCC_Char();
                n2.id   = partners[i].id;
                n2.data = partners[i].color;
                Colors.Add(n2);

                OCO_Char n3 = new OCO_Char();
                n3.id      = partners[i].id;
                n3.data    = partners[i].costume;
                n3.enabled = partners[i].CostumeEnabled;
                Costumes.Add(n3);

                OCS_Char n4 = new OCS_Char();
                n4.id    = partners[i].id;
                n4.type0 = partners[i].type0;
                n4.type1 = partners[i].type1;
                n4.type2 = partners[i].type2;
                n4.type3 = partners[i].type3;
                Skills.Add(n4);

                OCP_Char n5 = new OCP_Char();
                n5.id   = partners[i].id;
                n5.data = partners[i].parameters;
                Parameters.Add(n5);

                OCT_Char n6 = new OCT_Char();
                n6.id   = partners[i].id;
                n6.data = partners[i].talisman;
                Talismans.Add(n6);
            }

            ODF.Write(PartnerFolder + "OriginalCharacterDefaultTable.odf", Characters);
            OCC.Write(PartnerFolder + "MenuColorPartsCustomList.occ", Colors);
            OCO.Write(PartnerFolder + "MenuCostumeCustomList.oco", Costumes);
            OCS.Write(PartnerFolder + "MenuSkillCustomList.ocs", Skills);
            OCP.Write(PartnerFolder + "MenuParamaterCustomList.ocp", Parameters);
            OCT.Write(PartnerFolder + "MenuTalismanCustomList.oct", Talismans);
        }
Beispiel #4
0
        private void loadToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog browseFolder = new FolderBrowserDialog();

            browseFolder.Description = "Find chara_custom Folder";
            if (browseFolder.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }

            partners      = new List <Partner_Data>();
            PartnerFolder = browseFolder.SelectedPath + "\\";
            List <ODF_Char> Characters = ODF.Read(PartnerFolder + "OriginalCharacterDefaultTable.odf");
            List <OCC_Char> Colors     = OCC.Read(PartnerFolder + "MenuColorPartsCustomList.occ");
            List <OCO_Char> Costumes   = OCO.Read(PartnerFolder + "MenuCostumeCustomList.oco");
            List <OCS_Char> Skills     = OCS.Read(PartnerFolder + "MenuSkillCustomList.ocs");
            List <OCP_Char> Parameters = OCP.Read(PartnerFolder + "MenuParamaterCustomList.ocp");
            List <OCT_Char> Talismans  = OCT.Read(PartnerFolder + "MenuTalismanCustomList.oct");

            for (int i = 0; i < Characters.Count; i++)
            {
                Partner_Data p = new Partner_Data();
                p.id             = Characters[i].id;
                p.character      = Characters[i].data;
                p.color          = Colors[i].data;
                p.CostumeEnabled = Costumes[i].enabled;
                p.costume        = Costumes[i].data;
                p.type0          = Skills[i].type0;
                p.type1          = Skills[i].type1;
                p.type2          = Skills[i].type2;
                p.type3          = Skills[i].type3;
                p.parameters     = Parameters[i].data;
                p.talisman       = Talismans[i].data;
                partners.Add(p);
            }

            cbPartners.Items.Clear();
            for (int i = 0; i < partners.Count; i++)
            {
                cbPartners.Items.Add(partners[i].id);
            }
        }
Beispiel #5
0
        private void Form1_Load(object sender, EventArgs e)
        {
            s.Read();
            if (Directory.Exists(s.XENOFolder + "data\\system\\chara_custom"))
            {
                partners      = new List <Partner_Data>();
                PartnerFolder = s.XENOFolder + "data\\system\\chara_custom\\";
                List <ODF_Char> Characters = ODF.Read(PartnerFolder + "OriginalCharacterDefaultTable.odf");
                List <OCC_Char> Colors     = OCC.Read(PartnerFolder + "MenuColorPartsCustomList.occ");
                List <OCO_Char> Costumes   = OCO.Read(PartnerFolder + "MenuCostumeCustomList.oco");
                List <OCS_Char> Skills     = OCS.Read(PartnerFolder + "MenuSkillCustomList.ocs");
                List <OCP_Char> Parameters = OCP.Read(PartnerFolder + "MenuParamaterCustomList.ocp");
                List <OCT_Char> Talismans  = OCT.Read(PartnerFolder + "MenuTalismanCustomList.oct");

                for (int i = 0; i < Characters.Count; i++)
                {
                    Partner_Data p = new Partner_Data();
                    p.id             = Characters[i].id;
                    p.character      = Characters[i].data;
                    p.color          = Colors[i].data;
                    p.CostumeEnabled = Costumes[i].enabled;
                    p.costume        = Costumes[i].data;
                    p.type0          = Skills[i].type0;
                    p.type1          = Skills[i].type1;
                    p.type2          = Skills[i].type2;
                    p.type3          = Skills[i].type3;
                    p.parameters     = Parameters[i].data;
                    p.talisman       = Talismans[i].data;
                    partners.Add(p);
                }

                cbPartners.Items.Clear();
                for (int i = 0; i < partners.Count; i++)
                {
                    cbPartners.Items.Add(partners[i].id);
                }
            }
        }
Beispiel #6
0
 public async Task <ODF> SaveODF(ODF odf)
 {
     return(await _odfsRepository.UpdateOneAsync(odf));
 }
Beispiel #7
0
        /// <summary>
        /// Runs the schedule generator
        /// </summary>
        /// <param name="startDate"></param>
        /// <param name="prescriptions"></param>
        /// <returns></returns>
        public async Task <WeeklyPrescriptionSchedule> Run(DateTime startDate, IList <Prescription> prescriptions)
        {
            WeeklyPrescriptionSchedule weekSchedule = new WeeklyPrescriptionSchedule
            {
                StartDate = startDate,
            };

            IList <DailySchedule> days = new List <DailySchedule>();

            using (var scope = m_serviceProvider.CreateScope())
            {
                var context = scope.ServiceProvider.GetService <ServiceDbContext>();

                for (var dayDate = weekSchedule.StartDate;
                     dayDate < weekSchedule.StartDate + TimeSpan.FromDays(7);
                     dayDate += TimeSpan.FromDays(1)
                     )
                {
                    days.Add(new DailySchedule()
                    {
                        Date = dayDate,
                        WeeklyPrescriptionSchedule = weekSchedule,
                        PrintJobs = new List <PrintJob>()
                    });
                }

                /// Inspect the frequency of each prescription
                foreach (var prescription in prescriptions)
                {
                    int dailyOccurences, step;

                    switch (prescription.Frequency)
                    {
                    case (Frequency.DAILY):
                        dailyOccurences = 1;
                        step            = 1;
                        break;

                    case (Frequency.BID):
                        dailyOccurences = 2;
                        step            = 1;
                        break;

                    case (Frequency.OTHER_DAY):
                        dailyOccurences = 1;
                        step            = 2;
                        break;

                    case (Frequency.Q3H):
                        dailyOccurences = 4;
                        step            = 1;
                        break;

                    case (Frequency.Q4H):
                        dailyOccurences = 3;
                        step            = 1;
                        break;

                    case (Frequency.Q5H):
                        dailyOccurences = 2;
                        step            = 1;
                        break;

                    case (Frequency.QHS):
                        dailyOccurences = 8;
                        step            = 1;
                        break;

                    case (Frequency.QID):
                        dailyOccurences = 4;
                        step            = 1;
                        break;

                    case (Frequency.QWK):
                        dailyOccurences = 1;
                        step            = 7;
                        break;

                    case (Frequency.TID):
                        dailyOccurences = 3;
                        step            = 1;
                        break;

                    default:
                        throw new Exception();
                    }

                    /// Go through each day of the week
                    for (int dayInd = 0; dayInd < days.Count; dayInd += step)
                    {
                        int printJobNum = 0;

                        /// Go through each time-independent occurence slot
                        for (int odfInd = 0; odfInd < dailyOccurences; odfInd++)
                        {
                            // Move the JobNumber to where there is a Job with less than BatchSize odfs
                            while (days[dayInd].PrintJobs.Count() != printJobNum && days[dayInd].PrintJobs[printJobNum].ODFs.Count == BatchSize)
                            {
                                printJobNum++;
                            }


                            PrintJob printJob = (days[dayInd].PrintJobs.Count() == printJobNum) ? new PrintJob()
                            {
                                BatchNumber   = (uint)printJobNum,
                                Status        = PrintJobStatus.UNINITIALIZED,
                                ODFs          = new List <ODF>(),
                                DailySchedule = days[dayInd]
                            } : days[dayInd].PrintJobs[printJobNum];

                            context.PrintJobs.Add(printJob);

                            ODF odf = new ODF()
                            {
                                DateTimeOfCreation = DateTime.Now,
                                Prescription       = prescription
                            };

                            printJob.ODFs.Add(odf);
                            printJobNum++;
                        }
                    }
                }


                /// Sort each print job into times for each day
                foreach (DailySchedule dailySchedule in days)
                {
                    DateTime time = AdministrationStartTime;
                    foreach (PrintJob job in dailySchedule.PrintJobs)
                    {
                        job.ExpectedTimeOfReadiness = time - AdministrationPreparationTime;
                        time += AdministrationTimeStep;
                    }
                }

                AssignMockStatuses(weekSchedule);

                context.WeeklyPrescriptionSchedules.Add(weekSchedule);
                await context.SaveChangesAsync();

                return(weekSchedule);
            }
        }