예제 #1
0
        public void random1Test()
        {
            var r = new Random1();

            Assert.AreEqual(333139, r.random1(675248, 2));
            Assert.AreEqual(15, r.random1(34, 1));
            Assert.AreEqual(64, r.random1(9592, 1));
            Assert.AreEqual(575365, r.random1(881231, 23));
            Assert.AreEqual(6250000, r.random1(1934341, 1827));
            Assert.AreEqual(564496, r.random1(123891, 15));
            Assert.AreEqual(4100, r.random1(1093, 81));
            Assert.AreEqual(0, r.random1(10000000, 100000));
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            TextBox3.Text = Random1.Random11().ToString();


            MailMessage mail = new MailMessage(Label1.Text, TextBox1.Text);

            mail.Subject    = "Verification Code";
            mail.Body       = "Your Verification Code is " + TextBox3.Text;
            mail.IsBodyHtml = true;

            SmtpClient smtp = new SmtpClient();

            smtp.Host      = "smtp.gmail.com";
            smtp.EnableSsl = true;

            NetworkCredential networkcred = new NetworkCredential(Label1.Text, Label2.Text);

            smtp.UseDefaultCredentials = true;
            smtp.Credentials           = networkcred;
            smtp.Port = 587;
            smtp.Send(mail);
        }
예제 #3
0
        /// <summary> シフトのメンバーの好みを自動設定する
        /// </summary>
        /// <param name="sDate">スケジュール化された(自動設定対象の)日付</param>
        /// <param name="pattern">設定するシフト</param>
        protected virtual void SetFavoritePatternStand(CScheduledDate sDate, CPattern pattern)
        {
            if (!pattern.IsAvailable(sDate.Date))
            {
                // シフトが無効なら処理を抜ける
                return;
            }
            List <CMember> Candicates = new List <CMember>();

            //	シフトの有効なメンバーのリストを作成する
            for (int i = 0; i < sDate.ValidMemberSize; i++)
            {
                CMember m = sDate.GetValidMember(i);
                for (int j = 0; j < m.PatternSize; j++)
                {
                    CPattern pat = m.GetPattern(j);
                    if (pattern.Equals(pat))
                    {
                        Candicates.Add(m);
                    }
                }
            }
            int candicateSize = Candicates.Count;

            //	作成したリストからシフトに対して好みを割り振る
            for (int i = 0; i < candicateSize; i++)
            {
                int rand = 0;
                if (Candicates.Count > 1)
                {
                    rand = Random1.Next(Candicates.Count);
                }
                CMember member = Candicates[rand];
                Candicates.Remove(member);
                sDate.SetMemberRank(pattern, member, i);
            }
        }
예제 #4
0
        /// <summary> メンバーのシフトの好みを自動設定する
        /// </summary>
        /// <param name="sDate">スケジュール化された(自動設定対象の)日付</param>
        /// <param name="member">設定するメンバー</param>
        /// <param name="force">休みを気にするかどうか</param>
        protected virtual void SetFavoriteMemberStand(CScheduledDate sDate, CMember member, bool force)
        {
            //
            List <CPattern> Candicates = new List <CPattern>();

            //	メンバーの有効なシフトのリストを作成する
            for (int i = 0; i < member.PatternSize; i++)
            {
                CPattern pattern = member.GetPattern(i);
                if (pattern.IsAvailable(sDate.Date))
                {
                    CRequirePatterns require = sDate.Require;
                    if (require != null)
                    {
                        for (int j = 0; j < require.ValidSize; j++)
                        {
                            CPattern reqpat = sDate.Require.GetValid(j);
                            if (pattern.Equals(reqpat))
                            {
                                Candicates.Add(pattern);
                            }
                        }
                    }
                }
            }
            // 休み設定
            int conu = member.ContinuasInt;
            int cont = sDate.GetMemberContinues(member, conu);
            int rest = conu - cont;
            // 候補の数
            int candicateSize = Candicates.Count;

            // 作成したリストからメンバーに対して好みを割り振る
            for (int i = 0; i < candicateSize; i++)
            {
                int rand = 0;
                if (Candicates.Count > 1)
                {
                    rand = Random1.Next(Candicates.Count);
                }
                CPattern pattern = Candicates[rand];
                Candicates.Remove(pattern);
                if (member.IsAvalableDay(sDate.Date.DayOfWeek))
                {
                    // 稼動の曜日
                    if ((rest > i || conu <= 0) || force)
                    {
                        // 連続稼動の許容範囲内
                        sDate.SetPatternRank(member, pattern, i);
                    }
                    else
                    {
                        // 連続稼動の許容範囲外
                        sDate.SetPatternRank(member, CPattern.DAYOFF, i);
                    }
                }
                else
                {
                    // せっかく設定したんですが曜日の都合で・・・
                    sDate.SetPatternRank(member, CPattern.DAYOFF, i);
                }
            }
        }