public void RiskLevel(int day, TransmissionRiskLevel expected)
        {
            var tek = new Tek {
                RollingStartNumber = new DateTime(2020, 1, day, 0, 0, 0, DateTimeKind.Utc).ToRollingStartNumber()
            };
            var calculation = new TransmissionRiskLevelCalculationV1();
            var result      = calculation.Calculate(tek.RollingStartNumber, _DateOfSystemsOnset);

            Assert.AreEqual(expected, result);
        }
 public static TekEntity MapToEntity(Tek value)
 {
     return(new TekEntity
     {
         KeyData = value.KeyData,
         RollingPeriod = value.RollingPeriod,
         RollingStartNumber = value.RollingStartNumber,
         PublishingState = value.PublishingState,
         PublishAfter = value.PublishAfter,
         Region = value.Region
     });
 }
        private string[] ValidateSingleTek(Tek item)
        {
            if (_LastPublishedRsn.HasValue && item.RollingStartNumber <= _LastPublishedRsn)
            {
                return(new[] { "Before last published" });
            }

            if (item.StartDate > _Workflow.Created.Date)
            {
                //Kill 'same day' keys
                return(new[] { "Too recent" });
            }

            var now = _DateTimeProvider.Snapshot;

            if (item.StartDate == now.Date)
            {
                // this is a ‘same day key’, generated on the day the user gets result.
                // it must arrive within the call window (Step 4 from proposed process)
                if (_Workflow.AuthorisedByCaregiver != null && !(now - _Workflow.AuthorisedByCaregiver < TimeSpan.FromMinutes(_Config.AuthorisationWindowMinutes)))
                {
                    return(new[] { "Authorisation window expired" });
                }

                item.PublishAfter = _DateTimeProvider.Snapshot.AddMinutes(_Config.PublishingDelayInMinutes);
                _Valid.Add(item);
                return(new [] { "Same day key accepted - Reason:Before call or within call window Key." }); //TODO text reason from doc seems ambiguous.
            }

            // key from result day that arrives after today with extra check to ensure it’s a 1.4 device and not a tampered 1.5 device (Step 5)
            if (item.StartDate == _Workflow.Created.Date && _WorkflowHasKeyOnCreationDate)
            {
                return(new[] { "Tek for result day after midnight rejected - already a tek present for that day" });
            }

            // Key from the past accepted.
            _Valid.Add(item);
            return(new string[0]);
        }
예제 #4
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (Blighchekbox.CheckState == CheckState.Checked)


            //if (comboBox1.Text == "bligh")
            {
                if (Tad <= 0.5)
                {
                    Tad        = 0.5;
                    texta.Text = Tad.ToString();
                }
                else
                {
                    texta.Text = Tad.ToString();
                }// end of tad

                if (Tbd <= 0.5)
                {
                    Tbd           = 0.5;
                    radtextb.Text = Tbd.ToString();
                }
                else
                {
                    radtextb.Text = Tbd.ToString();
                }// end of tbd


                if (Tcd <= 0.5)
                {
                    Tcd           = 0.5;
                    radtextc.Text = Tcd.ToString();
                }
                else
                {
                    radtextc.Text = Tcd.ToString();
                }  //end of tcd

                if (Tdd <= 0.5)
                {
                    Tdd           = 0.5;
                    radtextd.Text = Tdd.ToString();
                }

                else
                {
                    radtextd.Text = Tdd.ToString();
                }  //end of tdd


                if (Ted <= 0.5)
                {
                    Ted           = 0.5;
                    radtexte.Text = Ted.ToString();
                }

                else
                {
                    radtexte.Text = Ted.ToString();
                }  //end of ted

                if (Tfd <= 0.5)
                {
                    Tfd           = 0.5;
                    radtextf.Text = Tfd.ToString();
                }

                else
                {
                    radtextf.Text = Tfd.ToString();
                } //end of tfd
            }     //end of If
            if (Khoslachekbox.CheckState == CheckState.Checked)

            // if(comboBox1.Text=="khosla")
            {
                if (Tak <= 0.5)
                {
                    Tak        = 0.5;
                    texta.Text = Tak.ToString();
                }
                else
                {
                    texta.Text = Tak.ToString();
                }// end of tad

                if (Tbk <= 0.5)
                {
                    Tbk           = 0.5;
                    radtextb.Text = Tbk.ToString();
                }
                else
                {
                    radtextb.Text = Tbk.ToString();
                }// end of tbd


                if (Tck <= 0.5)
                {
                    Tck           = 0.5;
                    radtextc.Text = Tck.ToString();
                }
                else
                {
                    radtextc.Text = Tck.ToString();
                } //end of tcd

                if (Tdk <= 0.5)
                {
                    Tdk           = 0.5;
                    radtextd.Text = Tdk.ToString();
                }

                else
                {
                    radtextd.Text = Tdk.ToString();
                } //end of tdd


                if (Tek <= 0.5)
                {
                    Tek           = 0.5;
                    radtexte.Text = Tek.ToString();
                }

                else
                {
                    radtexte.Text = Tek.ToString();
                } //end of ted

                if (Tfk <= 0.5)
                {
                    Tfk           = 0.5;
                    radtextf.Text = Tfk.ToString();
                }

                else
                {
                    radtextf.Text = Tfk.ToString();
                } //end of tfd
            }
            Dynamicbtn.Visible = true;
        }
예제 #5
0
        private Dictionary <string, int> CalcPrimary()
        {
            Dictionary <string, int> primary = new Dictionary <string, int>();

            primary.Add("Thatch", 0);
            primary.Add("Fiber", 0);
            primary.Add("Wood", 0);
            primary.Add("Stone", 0);
            primary.Add("Metal", 0);
            primary.Add("Paste", 0);
            primary.Add("Polymer", 0);
            primary.Add("Crystal", 0);
            primary.Add("Element", 0);

            Dictionary <string, int> Foundation  = new Dictionary <string, int>();
            Dictionary <string, int> Walls       = new Dictionary <string, int>();
            Dictionary <string, int> Ceiling     = new Dictionary <string, int>();
            Dictionary <string, int> Doorframe   = new Dictionary <string, int>();
            Dictionary <string, int> Door        = new Dictionary <string, int>();
            Dictionary <string, int> Windowframe = new Dictionary <string, int>();
            Dictionary <string, int> Window      = new Dictionary <string, int>();

            switch (primaryMaterial)
            {
            case "Thatch":
            {
                Thatch materialCost = new Thatch();
                Foundation = materialCost.Foundation;
                Walls      = materialCost.Wall;
                Ceiling    = materialCost.Ceiling;
                Doorframe  = materialCost.Doorframe;
                Door       = materialCost.Door;
                break;
            }

            case "Wood":
            {
                Wood materialCost = new Wood();
                Foundation  = materialCost.Foundation;
                Walls       = materialCost.Wall;
                Ceiling     = materialCost.Ceiling;
                Doorframe   = materialCost.Doorframe;
                Door        = materialCost.Door;
                Windowframe = materialCost.Windowframe;
                Window      = materialCost.Window;
                break;
            }

            case "Stone":
            {
                Stone materialCost = new Stone();
                Foundation  = materialCost.Foundation;
                Walls       = materialCost.Wall;
                Ceiling     = materialCost.Ceiling;
                Doorframe   = materialCost.Doorframe;
                Door        = materialCost.Door;
                Windowframe = materialCost.Windowframe;
                Window      = materialCost.Window;
                break;
            }

            case "Metal":
            {
                Metal materialCost = new Metal();
                Foundation  = materialCost.Foundation;
                Walls       = materialCost.Wall;
                Ceiling     = materialCost.Ceiling;
                Doorframe   = materialCost.Doorframe;
                Door        = materialCost.Door;
                Windowframe = materialCost.Windowframe;
                Window      = materialCost.Window;
                break;
            }

            case "Tek":
            {
                Tek materialCost = new Tek();
                Foundation  = materialCost.Foundation;
                Walls       = materialCost.Wall;
                Ceiling     = materialCost.Ceiling;
                Doorframe   = materialCost.Doorframe;
                Door        = materialCost.Door;
                Windowframe = materialCost.Windowframe;
                Window      = materialCost.Window;
                break;
            }
            }

            foreach (KeyValuePair <string, int> kv in Foundation)
            {
                primary[kv.Key] += kv.Value * foundation;
            }

            foreach (KeyValuePair <string, int> kv in Walls)
            {
                primary[kv.Key] += kv.Value * walls;
            }

            foreach (KeyValuePair <string, int> kv in Ceiling)
            {
                primary[kv.Key] += kv.Value * roof;
            }

            foreach (KeyValuePair <string, int> kv in Doorframe)
            {
                primary[kv.Key] += kv.Value * doors;
            }

            foreach (KeyValuePair <string, int> kv in Door)
            {
                primary[kv.Key] += kv.Value * doors;
            }

            if (primaryMaterial != "Thatch")
            {
                foreach (KeyValuePair <string, int> kv in Windowframe)
                {
                    primary[kv.Key] += kv.Value * windows;
                }

                foreach (KeyValuePair <string, int> kv in Window)
                {
                    primary[kv.Key] += kv.Value * windows;
                }
            }

            return(primary);
        }
예제 #6
0
        private Dictionary <string, int> CalcSecondary()
        {
            Dictionary <string, int> secondary = new Dictionary <string, int>();

            secondary.Add("Thatch", 0);
            secondary.Add("Fiber", 0);
            secondary.Add("Wood", 0);
            secondary.Add("Stone", 0);
            secondary.Add("Metal", 0);
            secondary.Add("Paste", 0);
            secondary.Add("Polymer", 0);
            secondary.Add("Crystal", 0);
            secondary.Add("Element", 0);

            Dictionary <string, int> Ceiling = new Dictionary <string, int>();

            switch (secondaryMaterial)
            {
            case "Thatch":
            {
                Thatch materialCost = new Thatch();
                Ceiling = materialCost.Ceiling;
                break;
            }

            case "Wood":
            {
                Wood materialCost = new Wood();
                Ceiling = materialCost.Ceiling;
                break;
            }

            case "Stone":
            {
                Stone materialCost = new Stone();
                Ceiling = materialCost.Ceiling;
                break;
            }

            case "Metal":
            {
                Metal materialCost = new Metal();
                Ceiling = materialCost.Ceiling;
                break;
            }

            case "Tek":
            {
                Tek materialCost = new Tek();
                Ceiling = materialCost.Ceiling;
                break;
            }
            }

            foreach (KeyValuePair <string, int> kv in Ceiling)
            {
                secondary[kv.Key] += kv.Value * foundation * (floors - 1);
            }

            return(secondary);
        }