private CategoryInfo GetCategoryInfo(string CategoryName)
        {
            var CourseCategoryInfo = new CategoryInfo();
            var dt = new DataTable();

            try
            {
                var Sql = string.Format(InitObject.GetScriptServiceInstance().GetCourseCategoryByName, BznsBase.KindergartenId, CategoryName);

                dt = DBHelper.MySqlHelper.GetDataSet(BznsBase.GetConnectionString, BznsBase.GetCommandType, Sql, null).Tables[0];

                if (dt.Rows.Count > 0)
                {
                    CourseCategoryInfo.CategoryId = dt.Rows[0]["type_id"].ToString();
                    CourseCategoryInfo.Name       = dt.Rows[0]["type_name"].ToString();
                }
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                dt = null;
            }

            return(CourseCategoryInfo);
        }
예제 #2
0
	// Use this for initialization
	public MisObjectPool (GameObject objTemplate, int poolSize = 50, Transform poolParent = null, InitObject initMethod = null) {

		_pool = new List<GameObject> ();

		if(_polledAmount == 0)
			_polledAmount = poolSize;

		GameObject poolObj = new GameObject();
		poolObj.name = objTemplate.name + "Pool";

		if (poolParent)
			poolObj.transform.parent = poolParent;

		for(int i = 0; i < _polledAmount; i++) {

			GameObject obj = GameObject.Instantiate (objTemplate);
			obj.name = "PolledObj_" + i;
			obj.transform.parent = poolObj.transform;
			obj.SetActive (false);

			if(initMethod != null) initMethod (obj);

			_pool.Add (obj);
		}
	}
예제 #3
0
        private void btnExportSave_Click(object sender, EventArgs e)
        {
            try
            {
                if (!string.IsNullOrEmpty(txtClassPath.Text.Trim()))
                {
                    InitObject.SetConfigValue("ExportClassFilePath", txtClassPath.Text.Trim());
                }

                if (!string.IsNullOrEmpty(txtErrorLog.Text.Trim()))
                {
                    InitObject.SetConfigValue("ErrorLogPath", txtErrorLog.Text.Trim());
                }

                if (!string.IsNullOrEmpty(txtInfoLog.Text.Trim()))
                {
                    InitObject.SetConfigValue("InfoLogPath", txtInfoLog.Text.Trim());
                }

                if (!string.IsNullOrEmpty(txtWarningLog.Text.Trim()))
                {
                    InitObject.SetConfigValue("WarningLogPath", txtWarningLog.Text.Trim());
                }

                MessageBox.Show("Congratulations, your change successfully!");
            }
            catch (Exception)
            {
                throw;
            }
        }
예제 #4
0
        private void btnGeneralSave_Click(object sender, EventArgs e)
        {
            var BrandId        = string.Empty;
            var KindergartenId = string.Empty;
            var UserID         = string.Empty;
            var BrandUserID    = string.Empty;

            try
            {
                BrandId        = cbBrand.SelectedValue.ToString();
                KindergartenId = cbKindergarten.SelectedValue.ToString();
                BrandUserID    = cbBrandUser.SelectedValue.ToString();
                UserID         = cbKindergartenUser.SelectedValue.ToString();

                InitObject.SetConfigValue("BrandId", BrandId);
                InitObject.SetConfigValue("KindergartenId", KindergartenId);
                InitObject.SetConfigValue("BrandUserID", BrandUserID);
                InitObject.SetConfigValue("UserID", UserID);

                MessageBox.Show("Congratulations, your change successfully!");
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
            }
        }
예제 #5
0
 public ToggleConfig(InitObject configInit, string displayText, bool isOn, TogglePressedHandler handler)
     : base(configInit)
 {
     DisplayText = displayText;
     IsOn        = isOn;
     Handler     = handler;
 }
예제 #6
0
        public Inspection(InitObject initValues)
        {
            if (initValues.FarmInspectionId <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(initValues.FarmInspectionId), $"{nameof(initValues.FarmInspectionId)} must be > 0");
            }

            if (initValues.InspectionId == Guid.Empty)
            {
                throw new ArgumentNullException($"{nameof(initValues.InspectionId)} must be non-empty.");
            }

            if (initValues.Domain == null)
            {
                throw new ArgumentNullException($"{nameof(initValues.Domain)} must be defined.");
            }

            if (initValues.Campaign == null)
            {
                throw new ArgumentNullException($"{nameof(initValues.Campaign)} must be defined.");
            }

            if (initValues.Reason == null)
            {
                throw new ArgumentNullException($"{nameof(initValues.Reason)} must be defined.");
            }

            if (initValues.ChecklistId <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(initValues.ChecklistId), $"{nameof(initValues.ChecklistId)} must be > 0");
            }

            if (initValues.FarmId <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(initValues.FarmId), $"{nameof(initValues.FarmId)} must be > 0");
            }

            FarmInspectionId = initValues.FarmInspectionId;
            InspectionId     = initValues.InspectionId;
            Domain           = initValues.Domain;
            Campaign         = initValues.Campaign;
            Reason           = initValues.Reason;
            Comment          = initValues.Comment;
            ChecklistId      = initValues.ChecklistId;
            FarmId           = initValues.FarmId;

            Appointment        = Appointment.None;
            CommentForFarmer   = CommentForOffice = "";
            Status             = InspectionStatus.Planned;
            InspectorSignature = Inspector2Signature = FarmerSignature = Signature.None;
            Compliance         = Compliance.Empty;
            PdfReport          = PdfReport.None;
            FinishStatus       = FinishStatus.NotFinished;
            CloseStatus        = CloseStatus.NotClosed;
            ReopenStatus       = ReopenStatus.NotReopened;
            PercentComputed    = 0;
            DateComputed       = DateTime.MinValue;
            OutcomeComputed    = InspectionOutcome.NotInspected;
        }
예제 #7
0
 public DropdownConfig(InitObject configInit, string displayText, string[] optionStrings, int defaultIndex, DropdownChosenHandler handler)
     : base(configInit)
 {
     DisplayText   = displayText;
     OptionStrings = optionStrings;
     DefaultIndex  = defaultIndex;
     Handler       = handler;
 }
예제 #8
0
 public OptionSelectConfig(InitObject configInit, string displayText, string[] optionStrings, int defaultIndex, OptionSelectedHandler handler)
     : base(configInit)
 {
     DisplayText   = displayText;
     OptionStrings = optionStrings;
     DefaultIndex  = defaultIndex;
     Handler       = handler;
 }
예제 #9
0
 public PanelObjectConfig(InitObject initObject)
 {
     Key = initObject.Key;
     CreationCallback  = initObject.CreationCallback;
     OnDisplayCallback = initObject.OnDisplayCallback;
     PaletteConfig     = initObject.PaletteConfig;
     Prefab            = initObject.Prefab;
 }
예제 #10
0
 public INITSection(BinaryReader reader)
 {
     ObjectNumber = reader.ReadUInt32();
     Objects      = new InitObject[ObjectNumber];
     for (int i = 0; i < Objects.Length; i++)
     {
         Objects[i] = new InitObject(reader);
     }
 }
예제 #11
0
 public SliderConfig(InitObject configInit, string displayText, bool useWholeNumbers, float minValue, float maxValue, float defaultValue, SliderUpdatedHandler handler)
     : base(configInit)
 {
     DisplayText     = displayText;
     MinValue        = minValue;
     MaxValue        = maxValue;
     DefaultValue    = defaultValue;
     UseWholeNumbers = useWholeNumbers;
     Handler         = handler;
 }
예제 #12
0
        private void LoadAcadYear()
        {
            cbYear.DataSource    = InitObject.GetAcadYear();
            cbYear.DisplayMember = "acad_title";
            cbYear.ValueMember   = "acad_year_id";

            if (BznsBase.EnableMappingField)
            {
                cbYear.Text = "2018-2019学年";
            }
        }
예제 #13
0
        public WpcCpuBoard(RomObject romObject)
        {
            ram         = Enumerable.Repeat((byte)0, memoryMapper.MEMORY_ADDR_HARDWARE).ToArray();
            romSizeMBit = romObject.romSizeMBit;
            systemRom   = romObject.systemRom;
            romFileName = romObject.fileName;
            gameRom     = romObject.gameRom;
            memoryPatch = MemoryPatch.getInstance();
            if (romObject.gameIdMemoryLocation != null)
            {
                MemoryPatchGameId.run(memoryPatch, (ushort)romObject.gameIdMemoryLocation);
            }
            if (romObject.skipWpcRomCheck)
            {
                Debug.Print("skipWpcRomCheck TRUE");
                MemoryPatchSkipBootCheck.run(memoryPatch);
            }
            memoryWriteHandler = MemoryHandler.getInstance(romObject.memoryPosition, ram);

            cpu = Cpu6809.getInstance(_write8, _read8);

            InterruptCallbackData interruptCallback = new InterruptCallbackData
            {
                irq         = cpu.irq,
                firqFromDmd = () =>
                {
                    cpu.firq();
                    asic.firqSourceDmd(true);
                },
                reset = cpu.reset
            };

            InitObject initObject = new InitObject
            {
                interruptCallback = interruptCallback,
                romSizeMBit       = romSizeMBit,
                romObject         = romObject,
                ram = ram,
                hasAlphanumericDisplay = romObject.hasAlphanumericDisplay
            };

            hasAlphaNumbericDisplay = romObject.hasAlphanumericDisplay;
            asic         = CpuBoardAsic.getInstance(initObject);
            soundBoard   = SoundBoard.getInstance(initObject);
            displayBoard = DisplayBoard.getInstance(initObject);
            externalIo   = ExternalIo.getInstance();

            ticksIrq = 0;
            protectedMemoryWriteAttempts = 0;
            memoryWrites = 0;
        }
예제 #14
0
    // Use this for initialization
    public SMBObjectPool(int polledAmount = 10, GameObject[] reference = null, InitObject initMethod = null)
    {
        _pool        = new List <T> ();
        PolledAmount = polledAmount;

        GameObject poolObj = new GameObject();

        poolObj.name = typeof(T).ToString() + "Pool";

        GameObject particlesParent = GameObject.Find("ObjectPool");

        if (particlesParent == null)
        {
            particlesParent      = new GameObject();
            particlesParent.name = "ObjectPool";
        }

        poolObj.transform.SetParent(particlesParent.transform);

        for (int i = 0; i < PolledAmount; i++)
        {
            GameObject obj = null;

            if (reference == null)
            {
                obj = new GameObject();
            }
            else
            {
                obj = GameObject.Instantiate(reference[Random.Range(0, reference.Length)]);
            }

            obj.name = "PolledObj_" + i;
            obj.transform.SetParent(poolObj.transform);
            obj.SetActive(false);

            T templ = obj.AddComponent <T>();

            if (initMethod != null)
            {
                initMethod(templ);
            }

            _pool.Add(templ);
        }
    }
예제 #15
0
        public DataTable GetClassPlanList()
        {
            var Result = new DataTable();
            var sql    = string.Empty;

            try
            {
                sql    = string.Format(InitObject.GetScriptServiceInstance().GetClassPlanList, BznsBase.KindergartenId);
                Result = DBHelper.MySqlHelper.GetDataSet(BznsBase.GetConnectionString, BznsBase.GetCommandType, sql, null).Tables[0];
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
            }
            return(Result);
        }
예제 #16
0
        private void LoadBrand()
        {
            var Sql   = string.Empty;
            var Brand = new DataTable();

            try
            {
                Sql   = InitObject.GetScriptServiceInstance().GetBrandList;
                Brand = DBHelper.MySqlHelper.GetDataSet(BznsBase.GetConnectionString, BznsBase.GetCommandType, Sql, null).Tables[0];
                cbBrand.DataSource    = Brand;
                cbBrand.DisplayMember = "brand_name";
                cbBrand.ValueMember   = "brand_id";
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                Brand = null;
            }
        }
예제 #17
0
        private void LoadKindergartenUser()
        {
            var Sql = string.Empty;
            var KindergartenUser = new DataTable();

            try
            {
                Sql = InitObject.GetScriptServiceInstance().GetKindergartenUserList;
                KindergartenUser = DBHelper.MySqlHelper.GetDataSet(BznsBase.GetConnectionString, BznsBase.GetCommandType, Sql, null).Tables[0];
                cbKindergartenUser.DataSource    = KindergartenUser;
                cbKindergartenUser.DisplayMember = "realname";
                cbKindergartenUser.ValueMember   = "user_id";
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                KindergartenUser = null;
            }
        }
예제 #18
0
        public CalInfo GetCalInfoByTitle(string CalID)
        {
            var result = new CalInfo();
            var sql    = string.Empty;

            try
            {
                sql = string.Format(InitObject.GetScriptServiceInstance().GetCalInfoByTitle, CalID);
                var dt = DBHelper.MySqlHelper.GetDataSet(BznsBase.GetConnectionString, BznsBase.GetCommandType, sql, null).Tables[0];
                if (dt.Rows.Count > 0)
                {
                    DataRow dr = dt.Rows[0];
                    result.CalID = dr["school_calendar_id"].ToString();
                    result.Title = dr["school_calendar_title"].ToString();
                    result.Type  = dr["class_type"].ToString();
                }
            }
            catch (Exception)
            {
                throw;
            }
            return(result);
        }
        private CourseInfo GetCourseInfo(string ClassName)
        {
            var Info = new CourseInfo();
            var Sql  = string.Empty;
            var dt   = new DataTable();

            try
            {
                Sql = string.Format(InitObject.GetScriptServiceInstance().GetInterestListByName, ClassName, BznsBase.KindergartenId);
                dt  = DBHelper.MySqlHelper.GetDataSet(BznsBase.GetConnectionString, BznsBase.GetCommandType, Sql, null).Tables[0];

                if (dt.Rows.Count > 0)
                {
                    Info.Id         = dt.Rows[0]["delay_class_id"].ToString();
                    Info.Name       = dt.Rows[0]["class_nm"].ToString();
                    Info.Type       = dt.Rows[0]["delay_type"].ToString();
                    Info.Hours      = int.Parse(dt.Rows[0]["total_hours"].ToString());
                    Info.StartDate  = Convert.ToDateTime(dt.Rows[0]["class_start_date"]);
                    Info.EndDate    = Convert.ToDateTime(dt.Rows[0]["class_end_date"]);
                    Info.Price      = Convert.ToDecimal(dt.Rows[0]["lesson_price"]);
                    Info.Amount     = Convert.ToDecimal(dt.Rows[0]["total_amount"]);
                    Info.Category   = dt.Rows[0]["lesson_type"].ToString();
                    Info.Status     = dt.Rows[0]["status"].ToString();
                    Info.ChargeType = dt.Rows[0]["charge_type"].ToString();
                }
            }
            catch (Exception ex)
            {
                throw;
            }
            finally
            {
                dt = null;
            }

            return(Info);
        }
        private StudentInfo GetStudentInfo(string StudentNo)
        {
            var dt   = new DataTable();
            var Sql  = string.Empty;
            var Info = new StudentInfo();

            try
            {
                Sql = string.Format(InitObject.GetScriptServiceInstance().GetClassIDByStudentID, StudentNo);
                dt  = DBHelper.MySqlHelper.GetDataSet(BznsBase.GetConnectionString, BznsBase.GetCommandType, Sql, null).Tables[0];

                if (dt.Rows.Count > 0)
                {
                    Info.ClassId   = dt.Rows[0]["class_id"].ToString();
                    Info.StudentId = dt.Rows[0]["stu_id"].ToString();
                }
            }
            catch (Exception)
            {
                throw;
            }

            return(Info);
        }
예제 #21
0
        public bool Insert(DataTable Students, string AcadYear, int StudentNamePos, int CardTypePos, int IdCardPos, int LastNamePos, int FirstNamePos, int NationalityPos, int SexPos, int BirthDayPos, int StudentNoPos, int StatusPos, int PlanTimePos, int NationPos, int GuardianNamePos, int GuardianMobileNoPos, int GuardianRelationshipPos, int GuardianEducationPos, int GuardianJobPos, int GuardianCompanyPos, int ParentNamePos, int MobileNoPos, int RelationshipPos, int EducationPos, int JobPos, int CompanyPos, int ClassNamePos, int ParentName3Pos, int MobileNo3Pos, int Relationship3Pos, int Education3Pos, int Job3Pos, int Company3Pos, bool IsTry2Import)
        {
            var Result         = false;
            var KindergartenId = BznsBase.KindergartenId;
            var UserID         = BznsBase.UserID;
            var Sql            = string.Empty;
            var CreateDate     = InitObject.GetSysDate();

            using (MySqlConnection conn = new MySqlConnection(BznsBase.GetConnectionString))
            {
                MySqlTransaction trans = null;
                conn.Open();
                trans = conn.BeginTransaction();

                try
                {
                    foreach (DataRow dr in Students.Rows)
                    {
                        var StudentID   = InitObject.GetUUID();
                        var StudentName = StudentNamePos == -1 ? string.Empty : dr[StudentNamePos].ToString();
                        var CardType    = CardTypePos == -1 ? string.Empty : InitObject.GetIdType(dr[CardTypePos].ToString());
                        var IdCard      = IdCardPos == -1 ? string.Empty : dr[IdCardPos].ToString();
                        var LastName    = LastNamePos == -1 ? string.Empty : dr[LastNamePos].ToString();
                        var FirstName   = FirstNamePos == -1 ? string.Empty : dr[FirstNamePos].ToString();
                        var Nationality = NationalityPos == -1 ? string.Empty : dr[NationalityPos].ToString();
                        var Sex         = SexPos == -1 ? string.Empty : InitObject.GetSexByName(dr[SexPos].ToString());
                        var BirthDay    = BirthDayPos == -1 ? string.Empty : dr[BirthDayPos].ToString().Replace("/", "-");
                        var StudentNo   = StudentNoPos == -1 ? string.Empty : dr[StudentNoPos].ToString();
                        var Status      = StatusPos == -1 ? string.Empty : InitObject.GetStatusByName(dr[StatusPos].ToString());
                        var PlanTime    = PlanTimePos == -1 ? string.Empty : dr[PlanTimePos].ToString().Replace("/", "-");
                        var Nation      = NationPos == -1 ? string.Empty : InitObject.GetNationCodeByName(dr[NationPos].ToString());
                        var ClassName   = ClassNamePos == -1 ? string.Empty : dr[ClassNamePos].ToString();

                        if (string.IsNullOrWhiteSpace(ClassName))
                        {
                            Status = "STUSTATUS01";
                        }
                        else
                        {
                            Status = "STUSTATUS09";
                        }

                        // insert student info

                        try
                        {
                            if (!string.IsNullOrEmpty(StudentName.Trim()))
                            {
                                Sql = string.Format(InitObject.GetScriptServiceInstance().StudentInsert, AcadYear, KindergartenId, StudentID, StudentName, CardType, IdCard, LastName, FirstName, PlanTime, Nationality, Nation, Sex, BirthDay, CreateDate, Status, StudentNo, UserID);
                                var ret = DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);

                                // create one account for student

                                if (ret > 0)
                                {
                                    Sql = string.Format(InitObject.GetScriptServiceInstance().StudentBalanceInsert, InitObject.GetUUID(), StudentID, UserID, CreateDate);
                                    DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            SysLog.Insert(new SysLogInfo(string.Concat("Import Student LogID:", dr["LogID"].ToString(), " Error Message:", ex.Message), SysLogType.ERROR, ModuleName));
                        }
                        finally
                        {
                        }

                        // insert parent info

                        var ParentID             = InitObject.GetUUID();
                        var GuardianName         = GuardianNamePos == -1 ? string.Empty : dr[GuardianNamePos].ToString();
                        var GuardianMobileNo     = GuardianMobileNoPos == -1 ? string.Empty : dr[GuardianMobileNoPos].ToString();
                        var GuardianRelationship = GuardianRelationshipPos == -1 ? string.Empty : InitObject.GetRelationshipCodeByName(dr[GuardianRelationshipPos].ToString());
                        var GuardianEducation    = GuardianEducationPos == -1 ? string.Empty : dr[GuardianEducationPos].ToString();
                        var GuardianJob          = GuardianJobPos == -1 ? string.Empty : dr[GuardianJobPos].ToString();
                        var GuardianCompany      = GuardianCompanyPos == -1 ? string.Empty : dr[GuardianCompanyPos].ToString();

                        try
                        {
                            if (!string.IsNullOrEmpty(GuardianName))
                            {
                                Sql = string.Format(InitObject.GetScriptServiceInstance().ParentInsert, ParentID, StudentID, GuardianName, GuardianMobileNo, GuardianRelationship, "Y", UserID, GuardianEducation, GuardianJob, GuardianCompany);
                                DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);

                                Sql = string.Format(InitObject.GetScriptServiceInstance().ParentRefInsert, StudentID, ParentID, "Y");
                                DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);

                                Sql = string.Format(InitObject.GetScriptServiceInstance().PrivacyInsert, StudentID, ParentID, "Y");
                                DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                            }
                        }
                        catch (Exception ex)
                        {
                            SysLog.Insert(new SysLogInfo(string.Concat("Import Student Guardion LogID:", dr["LogID"].ToString(), " Error Message:", ex.Message), SysLogType.ERROR, ModuleName));
                        }
                        finally
                        {
                        }

                        ParentID = InitObject.GetUUID();
                        var ParentName   = ParentNamePos == -1 ? string.Empty : dr[ParentNamePos].ToString();
                        var MobileNo     = MobileNoPos == -1 ? string.Empty : dr[MobileNoPos].ToString();
                        var Relationship = RelationshipPos == -1 ? string.Empty : InitObject.GetRelationshipCodeByName(dr[RelationshipPos].ToString());
                        var Education    = EducationPos == -1 ? string.Empty : dr[EducationPos].ToString();
                        var Job          = JobPos == -1 ? string.Empty : dr[JobPos].ToString();
                        var Company      = CompanyPos == -1 ? string.Empty : dr[CompanyPos].ToString();

                        try
                        {
                            if (!string.IsNullOrEmpty(ParentName))
                            {
                                Sql = string.Format(InitObject.GetScriptServiceInstance().ParentInsert, ParentID, StudentID, ParentName, MobileNo, Relationship, "N", UserID, Education, Job, Company);
                                DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);

                                Sql = string.Format(InitObject.GetScriptServiceInstance().ParentRefInsert, StudentID, ParentID, "N");
                                DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);

                                Sql = string.Format(InitObject.GetScriptServiceInstance().PrivacyInsert, StudentID, ParentID, "N");
                                DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                            }
                        }
                        catch (Exception ex)
                        {
                            SysLog.Insert(new SysLogInfo(string.Concat("Import Student Parent LogID:", dr["LogID"].ToString(), " Error Message:", ex.Message), SysLogType.ERROR, ModuleName));
                        }
                        finally
                        {
                        }

                        // parent 3

                        ParentID = InitObject.GetUUID();
                        var ParentName3   = ParentName3Pos == -1 ? string.Empty : dr[ParentName3Pos].ToString();
                        var MobileNo3     = MobileNo3Pos == -1 ? string.Empty : dr[MobileNo3Pos].ToString();
                        var Relationship3 = Relationship3Pos == -1 ? string.Empty : InitObject.GetRelationshipCodeByName(dr[Relationship3Pos].ToString());
                        var Education3    = Education3Pos == -1 ? string.Empty : dr[Education3Pos].ToString();
                        var Job3          = Job3Pos == -1 ? string.Empty : dr[Job3Pos].ToString();
                        var Company3      = Company3Pos == -1 ? string.Empty : dr[Company3Pos].ToString();

                        try
                        {
                            if (!string.IsNullOrEmpty(ParentName3))
                            {
                                Sql = string.Format(InitObject.GetScriptServiceInstance().ParentInsert, ParentID, StudentID, ParentName3, MobileNo3, Relationship3, "N", UserID, Education3, Job3, Company3);
                                DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);

                                Sql = string.Format(InitObject.GetScriptServiceInstance().ParentRefInsert, StudentID, ParentID, "N");
                                DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);

                                Sql = string.Format(InitObject.GetScriptServiceInstance().PrivacyInsert, StudentID, ParentID, "N");
                                DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                            }
                        }
                        catch (Exception ex)
                        {
                            SysLog.Insert(new SysLogInfo(string.Concat("Import Student Parent LogID:", dr["LogID"].ToString(), " Error Message:", ex.Message), SysLogType.ERROR, ModuleName));
                        }
                        finally
                        {
                        }


                        var StudentClassType   = "STUCLASSTYPE09";
                        var StudentClassStatus = "STUCLASSSTATUS03";

                        if (!string.IsNullOrWhiteSpace(ClassName))
                        {
                            var ClassId = string.Empty;
                            Sql = string.Format(InitObject.GetScriptServiceInstance().GetClassIdByYKN, AcadYear, KindergartenId, ClassName);
                            var dt = DBHelper.MySqlHelper.GetDataSet(BznsBase.GetConnectionString, BznsBase.GetCommandType, Sql, null).Tables[0];
                            if (dt.Rows.Count == 1)
                            {
                                foreach (DataRow row in dt.Rows)
                                {
                                    ClassId = row["class_id"].ToString();
                                }
                            }

                            try
                            {
                                Sql = string.Format(InitObject.GetScriptServiceInstance().StudentIntoClass, ClassId, StudentID, StudentClassType, UserID, StudentClassStatus, CreateDate);
                                DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                            }
                            catch (Exception ex)
                            {
                                SysLog.Insert(new SysLogInfo(string.Concat("Import Student Join Class LogID:", dr["LogID"].ToString(), " Error Message:", ex.Message), SysLogType.ERROR, ModuleName));
                            }
                            finally
                            {
                            }
                        }

                        Result = true;
                    }

                    if (IsTry2Import)
                    {
                        trans.Rollback();
                    }
                    else
                    {
                        trans.Commit();
                    }

                    Result = true;
                }
                catch (Exception ex)
                {
                    SysLog.Insert(new SysLogInfo(ex.Message.ToString(), SysLogType.ERROR, string.Concat(ModuleName, " - ", "Import Student Bzns")));
                    trans.Rollback();
                }
                finally
                {
                    trans = null;
                }
            }

            return(Result);
        }
        public bool StudentInsert(DataTable Students, int StudentNoPos, int YearPos, int CourseNamePos, int ClassHoursPos, int MoneyPos, int PaidPos, int StartDatePos, int EndDatePos, bool IsTry2Import)
        {
            var Result     = false;
            var CreateDate = InitObject.GetSysDate();

            using (MySqlConnection conn = new MySqlConnection(BznsBase.GetConnectionString))
            {
                MySqlTransaction trans = null;
                conn.Open();
                trans = conn.BeginTransaction();

                try
                {
                    foreach (DataRow dr in Students.Rows)
                    {
                        try
                        {
                            int ret         = 0;
                            var Sql         = string.Empty;
                            var StudentNo   = StudentNoPos == -1 ? string.Empty : dr[StudentNoPos].ToString().Trim();
                            var CourseName  = CourseNamePos == -1 ? string.Empty : dr[CourseNamePos].ToString().Trim();
                            var Year        = YearPos == -1 ? string.Empty : dr[YearPos].ToString().Trim();
                            var CourseInfo  = GetCourseInfo(CourseName);
                            var StudentInfo = GetStudentInfo(StudentNo);
                            var YearInfo    = InitObject.GetYearByTitle(Year);


                            // Add student to class

                            var RecordId = InitObject.GetUUID();

                            if (!string.IsNullOrEmpty(CourseInfo.Id) && !string.IsNullOrEmpty(StudentInfo.StudentId))
                            {
                                Sql = string.Format(InitObject.GetScriptServiceInstance().InterestStudentInsert, RecordId, CourseInfo.Id, StudentInfo.StudentId, 1);
                                ret = DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                            }

                            // Add finance bill and ref

                            var BillId     = InitObject.GetSysDate(true, true);
                            var BillStatus = "PAYMENTSTATE02";
                            var BillMonth  = DateTime.Now.ToString("yyyy-MM");
                            var ClassHours = ClassHoursPos == -1 ? 0 : Convert.ToInt32(dr[ClassHoursPos]);
                            var Money      = MoneyPos == -1 ? 0 : Convert.ToDecimal(dr[MoneyPos]);
                            var BillType   = 1;
                            var BillAlert  = "N";
                            var BillEffect = "Y";
                            var Paid       = PaidPos == -1 ? "N" : "Y";
                            var PayMoney   = Money;

                            var RefId       = InitObject.GetUUID();
                            var StartDate   = StartDatePos == -1 ? CourseInfo.StartDate.ToString("yyyy-MM-dd") : Convert.ToString(dr[StartDatePos]);
                            var EndDate     = EndDatePos == -1 ? CourseInfo.EndDate.ToString("yyyy-MM-dd") : Convert.ToString(dr[EndDatePos]);
                            var RefBillType = "EXTRACLASS";
                            var RefBillNo   = InitObject.GetBillNo(StartDate, string.Empty);
                            var RefStatus   = "PAYMENTSTATE02";

                            #region Create student finance order info

                            if (ret > 0 && Money > 0)
                            {
                                // insert into bill

                                ret = 0;
                                if (Paid == "N")
                                {
                                    PayMoney = new decimal(0);
                                }
                                Sql = string.Format(InitObject.GetScriptServiceInstance().InterestBillInsert, BillId, StudentInfo.StudentId, YearInfo.YearID, "", BillStatus, BillMonth, Money, PayMoney, BillType, BillAlert, BillEffect, CreateDate);
                                ret = DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);

                                // insert into bill ref

                                if (ret > 0)
                                {
                                    ret = 0;
                                    if (Paid == "N")
                                    {
                                        RefStatus = "PAYMENTSTATE01";
                                    }
                                    Sql = string.Format(InitObject.GetScriptServiceInstance().InterestBillRefInsert, RefId, BillId, RefBillType, RefBillNo, CourseInfo.Id, BillMonth, ClassHours, CourseInfo.Hours, StartDate, EndDate, RefStatus, Money, PayMoney, CreateDate, CreateDate, BznsBase.UserID);
                                    ret = DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                                }
                            }

                            #endregion

                            #region Create student pay info

                            var PayId     = InitObject.GetUUID();
                            var PayWay    = InitObject.GetPaymentType(BznsBase.PaymentType);
                            var PayInfo   = InitObject.GetPaymentInfo();
                            var PayStatus = "PAYMENTSTATE02";

                            var PayRefId     = InitObject.GetUUID();
                            var PayRefStatus = "0";


                            if (ret > 0)
                            {
                                ret = 0;
                                Sql = string.Format(InitObject.GetScriptServiceInstance().InterestBillPaymentInsert, PayId, BillId, RefBillNo, Money, PayWay, CreateDate, PayInfo.PaymentNo, PayInfo.PaymentNo, PayStatus, BznsBase.UserID, CreateDate);
                                ret = DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);

                                if (ret > 0)
                                {
                                    ret = 0;
                                    Sql = string.Format(InitObject.GetScriptServiceInstance().InterestBillPaymentRefInsert, PayRefId, RefId, PayId, Money, PayStatus, CreateDate);
                                    ret = DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                                }
                            }

                            #endregion

                            #region Add money to account and balance

                            var StudentBalanceInfo = new StudentBalanceInfo();
                            var AccountId          = InitObject.GetUUID();
                            Sql = string.Format(InitObject.GetScriptServiceInstance().GetStudentBalanceListByStudentId, StudentInfo.StudentId);
                            var dt = DBHelper.MySqlHelper.GetDataSet(BznsBase.GetConnectionString, BznsBase.GetCommandType, Sql, null).Tables[0];

                            if (dt.Rows.Count > 0)
                            {
                                StudentBalanceInfo.BalanceId = dt.Rows[0]["balance_id"].ToString();
                                StudentBalanceInfo.StudentId = dt.Rows[0]["student_id"].ToString();
                                StudentBalanceInfo.Total     = Convert.ToDecimal(dt.Rows[0]["balance_total"]);
                                StudentBalanceInfo.Income    = Convert.ToDecimal(dt.Rows[0]["balance_income"]);
                            }

                            // Add into student balance account.

                            if (ret > 0 && !string.IsNullOrEmpty(StudentBalanceInfo.BalanceId))
                            {
                                ret = 0;
                                Sql = string.Format(InitObject.GetScriptServiceInstance().InterestStudentBalanceAccountInsert, AccountId, StudentBalanceInfo.BalanceId, StudentInfo.StudentId, Money, "EXTRACLASS", BznsBase.UserID, CreateDate);
                                ret = DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                            }

                            // Add into delay subject account

                            var DelayId = InitObject.GetUUID();

                            if (ret > 0)
                            {
                                ret = 0;
                                Sql = string.Format(InitObject.GetScriptServiceInstance().DelayInsert, DelayId, AccountId, StudentInfo.StudentId, YearInfo.YearID, Money, "Y", Money, RefId, BznsBase.UserID, CreateDate);
                                ret = DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                            }

                            // Add into student balance

                            if (ret > 0)
                            {
                                ret = 0;
                                Sql = string.Format(InitObject.GetScriptServiceInstance().InterestBalanceUpdate, Money, Money, StudentInfo.StudentId);
                                ret = DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                            }

                            // Add into subject log

                            if (ret > 0)
                            {
                                ret = 0;
                                Sql = string.Format(InitObject.GetScriptServiceInstance().InterestSubjectLogInsert, StudentInfo.StudentId, "EXTRACLASS", DelayId, "REALGROWTH", "延时服务初始化数据导入", Money, CreateDate, RefId, PayRefId);
                                ret = DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                            }

                            // Add into balance log

                            if (ret > 0)
                            {
                                ret = 0;
                                Sql = string.Format(InitObject.GetScriptServiceInstance().InterestStudentBalanceLogInsert, "TRADETYPE01", StudentInfo.StudentId, Money, CreateDate, "EXTRACLASS", "N", StudentBalanceInfo.BalanceId, BillId, "延时服务初始化数据导入");
                                ret = DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                            }

                            #endregion
                        }
                        catch (Exception ex)
                        {
                            SysLog.Insert(new SysLogInfo(string.Concat(dr[StudentNoPos].ToString(), ex.Message.ToString()), SysLogType.ERROR, string.Concat(ModuleName, " - ", "Interest Student Insert", " - ", "Student")));
                        }
                    }

                    if (IsTry2Import)
                    {
                        trans.Rollback();
                    }
                    else
                    {
                        trans.Commit();
                    }

                    Result = true;
                }
                catch (Exception ex)
                {
                    SysLog.Insert(new SysLogInfo(ex.Message.ToString(), SysLogType.ERROR, string.Concat(ModuleName, " - ", "Interest Student Insert", " - ", "Student")));
                    trans.Rollback();
                }
            }

            return(Result);
        }
        public bool InterestInsert(DataTable Classes, int ClassNamePos, int TypePos, int StartDatePos, int EndDatePos, int HoursPos, int PricePos, int AmountPos, int CategoryNamePos, int StatusPos, int ChargeTypePos, bool IsTry2Import)
        {
            var Result     = false;
            var CreateDate = InitObject.GetSysDate();

            using (MySqlConnection conn = new MySqlConnection(BznsBase.GetConnectionString))
            {
                MySqlTransaction trans = null;
                conn.Open();
                trans = conn.BeginTransaction();

                try
                {
                    foreach (DataRow dr in Classes.Rows)
                    {
                        try
                        {
                            var ClassName          = ClassNamePos == -1 ? string.Empty : dr[ClassNamePos].ToString().Trim();
                            var Type               = TypePos == -1 ? string.Empty : InitObject.GetDelayClassType(dr[TypePos].ToString().Trim());
                            var StartDate          = StartDatePos == -1 ? string.Empty : dr[StartDatePos].ToString().Trim();
                            var EndDate            = EndDatePos == -1 ? string.Empty : dr[EndDatePos].ToString().Trim();
                            var Hours              = HoursPos == -1 ? 0 : Convert.ToInt32(dr[HoursPos]);
                            var Price              = PricePos == -1 ? 0 : Convert.ToDecimal(dr[PricePos]);
                            var Amount             = AmountPos == -1 ? 0 : Convert.ToDecimal(dr[AmountPos]);
                            var CategoryName       = CategoryNamePos == -1 ? string.Empty : dr[CategoryNamePos].ToString().Trim();
                            var Status             = StatusPos == -1 ? string.Empty : InitObject.GetDelayClassStatus(dr[StatusPos].ToString().Trim());
                            var ChargeType         = ChargeTypePos == -1 ? string.Empty : InitObject.GetDelayChargeType(dr[ChargeTypePos].ToString().Trim());
                            var CourseCategoryInfo = new CategoryInfo();
                            var CategoryID         = InitObject.GetUUID();
                            var ClassId            = InitObject.GetUUID();
                            var Sql = string.Empty;


                            // Get category, if not exist create one in category table.

                            if (Type == "EXTRACLASS")
                            {
                                CourseCategoryInfo = GetCategoryInfo(CategoryName);
                                if (string.IsNullOrEmpty(CourseCategoryInfo.CategoryId))
                                {
                                    Sql = string.Format(InitObject.GetScriptServiceInstance().CategoryInsert, CategoryID, CategoryName, BznsBase.KindergartenId, BznsBase.UserID, CreateDate);
                                    DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                                    CourseCategoryInfo.CategoryId = CategoryID;
                                    CourseCategoryInfo.Name       = CategoryName;
                                }
                            }

                            // Create one interest class.

                            Sql = string.Format(InitObject.GetScriptServiceInstance().InterestInsert, ClassId, ClassName, Type, StartDate, EndDate, Hours, Price, Amount, (string.IsNullOrEmpty(CourseCategoryInfo.CategoryId)? string.Empty: CourseCategoryInfo.CategoryId), Status, BznsBase.KindergartenId, CreateDate, BznsBase.UserID, ChargeType);
                            DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                        }
                        catch (Exception ex)
                        {
                            SysLog.Insert(new SysLogInfo(string.Concat(dr["LogID"].ToString(), ex.Message.ToString()), SysLogType.ERROR, string.Concat(ModuleName, " - ", "InterestInsert", " - ", "Class")));
                        }
                    }

                    if (IsTry2Import)
                    {
                        trans.Rollback();
                    }
                    else
                    {
                        trans.Commit();
                    }

                    Result = true;
                }
                catch (Exception ex)
                {
                    SysLog.Insert(new SysLogInfo(ex.Message.ToString(), SysLogType.ERROR, string.Concat(ModuleName, " - ", "InterestInsert", " - ", "Class")));
                    trans.Rollback();
                }
            }


            return(Result);
        }
예제 #24
0
        public static InstructionCollection Parse(Stream input, long instructionsPosition)
        {
            var instructions = new SortedList <int, InstructionBase>();

            using (var helper = new InstructionParseHelper(input, instructionsPosition))
            {
                var reader = helper.GetReader();
                while (helper.CanParse(instructions))
                {
                    //now reader the instructions
                    var instructionPosition = helper.CurrentPosition;
                    var type             = reader.ReadByteAsEnum <InstructionType>();
                    var requireAlignment = InstructionAlignment.IsAligned(type);

                    if (requireAlignment)
                    {
                        reader.Align(4);
                    }

                    InstructionBase instruction = null;
                    var             parameters  = new List <Value>();

                    switch (type)
                    {
                    case InstructionType.ToNumber:
                        instruction = new ToNumber();
                        break;

                    case InstructionType.NextFrame:
                        instruction = new NextFrame();
                        break;

                    case InstructionType.Play:
                        instruction = new Play();
                        break;

                    case InstructionType.Stop:
                        instruction = new Stop();
                        break;

                    case InstructionType.Add:
                        instruction = new Add();
                        break;

                    case InstructionType.Subtract:
                        instruction = new Subtract();
                        break;

                    case InstructionType.Multiply:
                        instruction = new Multiply();
                        break;

                    case InstructionType.Divide:
                        instruction = new Divide();
                        break;

                    case InstructionType.Not:
                        instruction = new Not();
                        break;

                    case InstructionType.StringEquals:
                        instruction = new StringEquals();
                        break;

                    case InstructionType.Pop:
                        instruction = new Pop();
                        break;

                    case InstructionType.ToInteger:
                        instruction = new ToInteger();
                        break;

                    case InstructionType.GetVariable:
                        instruction = new GetVariable();
                        break;

                    case InstructionType.SetVariable:
                        instruction = new SetVariable();
                        break;

                    case InstructionType.StringConcat:
                        instruction = new StringConcat();
                        break;

                    case InstructionType.GetProperty:
                        instruction = new GetProperty();
                        break;

                    case InstructionType.SetProperty:
                        instruction = new SetProperty();
                        break;

                    case InstructionType.Trace:
                        instruction = new Trace();
                        break;

                    case InstructionType.Random:
                        instruction = new RandomNumber();
                        break;

                    case InstructionType.Delete:
                        instruction = new Delete();
                        break;

                    case InstructionType.Delete2:
                        instruction = new Delete2();
                        break;

                    case InstructionType.DefineLocal:
                        instruction = new DefineLocal();
                        break;

                    case InstructionType.CallFunction:
                        instruction = new CallFunction();
                        break;

                    case InstructionType.Return:
                        instruction = new Return();
                        break;

                    case InstructionType.Modulo:
                        instruction = new Modulo();
                        break;

                    case InstructionType.NewObject:
                        instruction = new NewObject();
                        break;

                    case InstructionType.InitArray:
                        instruction = new InitArray();
                        break;

                    case InstructionType.InitObject:
                        instruction = new InitObject();
                        break;

                    case InstructionType.TypeOf:
                        instruction = new TypeOf();
                        break;

                    case InstructionType.Add2:
                        instruction = new Add2();
                        break;

                    case InstructionType.LessThan2:
                        instruction = new LessThan2();
                        break;

                    case InstructionType.Equals2:
                        instruction = new Equals2();
                        break;

                    case InstructionType.ToString:
                        instruction = new ToString();
                        break;

                    case InstructionType.PushDuplicate:
                        instruction = new PushDuplicate();
                        break;

                    case InstructionType.GetMember:
                        instruction = new GetMember();
                        break;

                    case InstructionType.SetMember:
                        instruction = new SetMember();
                        break;

                    case InstructionType.Increment:
                        instruction = new Increment();
                        break;

                    case InstructionType.Decrement:
                        instruction = new Decrement();
                        break;

                    case InstructionType.CallMethod:
                        instruction = new CallMethod();
                        break;

                    case InstructionType.Enumerate2:
                        instruction = new Enumerate2();
                        break;

                    case InstructionType.EA_PushThis:
                        instruction = new PushThis();
                        break;

                    case InstructionType.EA_PushZero:
                        instruction = new PushZero();
                        break;

                    case InstructionType.EA_PushOne:
                        instruction = new PushOne();
                        break;

                    case InstructionType.EA_CallFunc:
                        instruction = new CallFunc();
                        break;

                    case InstructionType.EA_CallMethodPop:
                        instruction = new CallMethodPop();
                        break;

                    case InstructionType.BitwiseXOr:
                        instruction = new BitwiseXOr();
                        break;

                    case InstructionType.Greater:
                        instruction = new Greater();
                        break;

                    case InstructionType.EA_PushThisVar:
                        instruction = new PushThisVar();
                        break;

                    case InstructionType.EA_PushGlobalVar:
                        instruction = new PushGlobalVar();
                        break;

                    case InstructionType.EA_ZeroVar:
                        instruction = new ZeroVar();
                        break;

                    case InstructionType.EA_PushTrue:
                        instruction = new PushTrue();
                        break;

                    case InstructionType.EA_PushFalse:
                        instruction = new PushFalse();
                        break;

                    case InstructionType.EA_PushNull:
                        instruction = new PushNull();
                        break;

                    case InstructionType.EA_PushUndefined:
                        instruction = new PushUndefined();
                        break;

                    case InstructionType.GotoFrame:
                        instruction = new GotoFrame();
                        parameters.Add(Value.FromInteger(reader.ReadInt32()));
                        break;

                    case InstructionType.GetURL:
                        instruction = new GetUrl();
                        parameters.Add(Value.FromString(reader.ReadStringAtOffset()));
                        parameters.Add(Value.FromString(reader.ReadStringAtOffset()));
                        break;

                    case InstructionType.SetRegister:
                        instruction = new SetRegister();
                        parameters.Add(Value.FromInteger(reader.ReadInt32()));
                        break;

                    case InstructionType.ConstantPool:
                    {
                        instruction = new ConstantPool();
                        var count     = reader.ReadUInt32();
                        var constants = reader.ReadFixedSizeArrayAtOffset <uint>(() => reader.ReadUInt32(), count);

                        foreach (var constant in constants)
                        {
                            parameters.Add(Value.FromConstant(constant));
                        }
                    }
                    break;

                    case InstructionType.GotoLabel:
                        instruction = new GotoLabel();
                        parameters.Add(Value.FromString(reader.ReadStringAtOffset()));
                        break;

                    case InstructionType.DefineFunction2:
                    {
                        instruction = new DefineFunction2();
                        var name       = reader.ReadStringAtOffset();
                        var nParams    = reader.ReadUInt32();
                        var nRegisters = reader.ReadByte();
                        var flags      = reader.ReadUInt24();

                        //list of parameter strings
                        var paramList = reader.ReadFixedSizeListAtOffset <FunctionArgument>(() => new FunctionArgument()
                            {
                                Register  = reader.ReadInt32(),
                                Parameter = reader.ReadStringAtOffset(),
                            }, nParams);

                        parameters.Add(Value.FromString(name));
                        parameters.Add(Value.FromInteger((int)nParams));
                        parameters.Add(Value.FromInteger((int)nRegisters));
                        parameters.Add(Value.FromInteger((int)flags));
                        foreach (var param in paramList)
                        {
                            parameters.Add(Value.FromInteger(param.Register));
                            parameters.Add(Value.FromString(param.Parameter));
                        }
                        //body size of the function
                        parameters.Add(Value.FromInteger(reader.ReadInt32()));
                        //skip 8 bytes
                        reader.ReadUInt64();
                    }
                    break;

                    case InstructionType.PushData:
                    {
                        instruction = new PushData();

                        var count     = reader.ReadUInt32();
                        var constants = reader.ReadFixedSizeArrayAtOffset <uint>(() => reader.ReadUInt32(), count);

                        foreach (var constant in constants)
                        {
                            parameters.Add(Value.FromConstant(constant));
                        }
                    }
                    break;

                    case InstructionType.BranchAlways:
                    {
                        instruction = new BranchAlways();
                        var offset = reader.ReadInt32();
                        parameters.Add(Value.FromInteger(offset));
                        helper.ReportBranchOffset(offset);
                    }
                    break;

                    case InstructionType.GetURL2:
                        instruction = new GetUrl2();
                        break;

                    case InstructionType.DefineFunction:
                    {
                        instruction = new DefineFunction();
                        var name = reader.ReadStringAtOffset();
                        //list of parameter strings
                        var paramList = reader.ReadListAtOffset <string>(() => reader.ReadStringAtOffset());

                        parameters.Add(Value.FromString(name));
                        parameters.Add(Value.FromInteger(paramList.Count));
                        foreach (var param in paramList)
                        {
                            parameters.Add(Value.FromString(param));
                        }
                        //body size of the function
                        parameters.Add(Value.FromInteger(reader.ReadInt32()));
                        //skip 8 bytes
                        reader.ReadUInt64();
                    }
                    break;

                    case InstructionType.BranchIfTrue:
                    {
                        instruction = new BranchIfTrue();
                        var offset = reader.ReadInt32();
                        parameters.Add(Value.FromInteger(offset));
                        helper.ReportBranchOffset(offset);
                    }
                    break;

                    case InstructionType.GotoFrame2:
                        instruction = new GotoFrame2();
                        parameters.Add(Value.FromInteger(reader.ReadInt32()));
                        break;

                    case InstructionType.EA_PushString:
                        instruction = new PushString();
                        //the constant id that should be pushed
                        parameters.Add(Value.FromString(reader.ReadStringAtOffset()));
                        break;

                    case InstructionType.EA_PushConstantByte:
                        instruction = new PushConstantByte();
                        //the constant id that should be pushed
                        parameters.Add(Value.FromConstant(reader.ReadByte()));
                        break;

                    case InstructionType.EA_GetStringVar:
                        instruction = new GetStringVar();
                        parameters.Add(Value.FromString(reader.ReadStringAtOffset()));
                        break;

                    case InstructionType.EA_SetStringVar:
                        instruction = new SetStringVar();
                        parameters.Add(Value.FromString(reader.ReadStringAtOffset()));
                        break;

                    case InstructionType.EA_GetStringMember:
                        instruction = new GetStringMember();
                        parameters.Add(Value.FromString(reader.ReadStringAtOffset()));
                        break;

                    case InstructionType.EA_SetStringMember:
                        instruction = new SetStringMember();
                        parameters.Add(Value.FromString(reader.ReadStringAtOffset()));
                        break;

                    case InstructionType.EA_PushValueOfVar:
                        instruction = new PushValueOfVar();
                        //the constant id that should be pushed
                        parameters.Add(Value.FromConstant(reader.ReadByte()));
                        break;

                    case InstructionType.EA_GetNamedMember:
                        instruction = new GetNamedMember();
                        parameters.Add(Value.FromConstant(reader.ReadByte()));
                        break;

                    case InstructionType.EA_CallNamedFuncPop:
                        instruction = new CallNamedFuncPop();
                        parameters.Add(Value.FromConstant(reader.ReadByte()));
                        break;

                    case InstructionType.EA_CallNamedFunc:
                        instruction = new CallNamedFunc();
                        parameters.Add(Value.FromConstant(reader.ReadByte()));
                        break;

                    case InstructionType.EA_CallNamedMethodPop:
                        instruction = new CallNamedMethodPop();
                        parameters.Add(Value.FromConstant(reader.ReadByte()));
                        break;

                    case InstructionType.EA_PushFloat:
                        instruction = new PushFloat();
                        parameters.Add(Value.FromFloat(reader.ReadSingle()));
                        break;

                    case InstructionType.EA_PushByte:
                        instruction = new PushByte();
                        parameters.Add(Value.FromInteger(reader.ReadByte()));
                        break;

                    case InstructionType.EA_PushShort:
                        instruction = new PushShort();
                        parameters.Add(Value.FromInteger(reader.ReadUInt16()));
                        break;

                    case InstructionType.End:
                        instruction = new End();
                        break;

                    case InstructionType.EA_CallNamedMethod:
                        instruction = new CallNamedMethod();
                        parameters.Add(Value.FromConstant(reader.ReadByte()));
                        break;

                    case InstructionType.Var:
                        instruction = new Var();
                        break;

                    case InstructionType.EA_PushRegister:
                        instruction = new PushRegister();
                        parameters.Add(Value.FromInteger(reader.ReadByte()));
                        break;

                    case InstructionType.EA_PushConstantWord:
                        instruction = new PushConstantWord();
                        parameters.Add(Value.FromConstant(reader.ReadUInt16()));
                        break;

                    case InstructionType.EA_CallFuncPop:
                        instruction = new CallFunctionPop();
                        break;

                    case InstructionType.StrictEqual:
                        instruction = new StrictEquals();
                        break;

                    default:
                        throw new InvalidDataException("Unimplemented bytecode instruction:" + type.ToString());
                    }

                    if (instruction != null)
                    {
                        instruction.Parameters = parameters;
                        instructions.Add(instructionPosition, instruction);
                    }
                }
            }

            return(new InstructionCollection(instructions));
        }
예제 #25
0
        public bool InsertClass(string AcadYear, string PlanID, int SchoolCalPos, int ClassTypePos, int ClassNamePos, int CapacityPos, int StartTimePos, int EndTimePos, int ClassAliasPos, int GradeTypePos, int AllowOverbookedPos, DataTable Classes, bool IsTry2Import)
        {
            var Result         = false;
            var KindergartenId = BznsBase.KindergartenId;
            var BrandId        = BznsBase.BrandID;
            var UserID         = BznsBase.UserID;
            var Sql            = string.Empty;
            var ClassID        = string.Empty;
            var CreateDate     = InitObject.GetSysDate();

            using (MySqlConnection conn = new MySqlConnection(BznsBase.GetConnectionString))
            {
                MySqlTransaction trans = null;
                conn.Open();
                trans = conn.BeginTransaction();

                try
                {
                    foreach (DataRow dr in Classes.Rows)
                    {
                        ClassID = InitObject.GetUUID();
                        var SchoolCal       = SchoolCalPos == -1 ? string.Empty : dr[SchoolCalPos].ToString();
                        var ClassType       = ClassTypePos == -1 ? string.Empty : InitObject.GetClassTypeByName(dr[ClassTypePos].ToString());
                        var ClassName       = ClassNamePos == -1 ? string.Empty : dr[ClassNamePos].ToString();
                        var Capacity        = CapacityPos == -1 ? 0:int.Parse(dr[CapacityPos].ToString());
                        var StartTime       = StartTimePos == -1 ? string.Empty : dr[StartTimePos].ToString();
                        var EndTime         = EndTimePos == -1 ? string.Empty : dr[EndTimePos].ToString();
                        var ClassAlias      = ClassAliasPos == -1 ? string.Empty : dr[ClassAliasPos].ToString();
                        var GradeType       = GradeTypePos == -1 ? string.Empty : InitObject.GetGradeTypeByName(dr[GradeTypePos].ToString());
                        var AllowOverbooked = AllowOverbookedPos == -1 ? string.Empty : dr[AllowOverbookedPos].ToString();
                        var CalInfo         = new CalInfo();

                        if (!string.IsNullOrEmpty(SchoolCal))
                        {
                            CalInfo = GetCalInfoByTitle(SchoolCal);
                        }

                        try
                        {
                            Sql = string.Format(InitObject.GetScriptServiceInstance().ClassTempInsert, AcadYear, PlanID, ClassID, GradeType, ClassType, CalInfo.CalID, ClassName, ClassAlias, Capacity, AllowOverbooked, StartTime, EndTime, UserID, CreateDate, KindergartenId);
                            DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);

                            Sql = string.Format(InitObject.GetScriptServiceInstance().ClassInsert, AcadYear, PlanID, ClassID, GradeType, ClassType, CalInfo.CalID, ClassName, ClassAlias, Capacity, AllowOverbooked, StartTime, EndTime, UserID, CreateDate, KindergartenId);
                            DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                        }
                        catch (Exception ex)
                        {
                            SysLog.Insert(new SysLogInfo(string.Concat("Import Class LogID:", dr["LogID"].ToString(), " Error Message:", ex.Message), SysLogType.ERROR, ModuleName));
                        }
                        finally {
                        }
                    }

                    if (IsTry2Import)
                    {
                        trans.Rollback();
                    }
                    else
                    {
                        trans.Commit();
                    }

                    Result = true;
                }
                catch (Exception ex)
                {
                    SysLog.Insert(new SysLogInfo(ex.Message.ToString(), SysLogType.ERROR, string.Concat(ModuleName, " - ", "Import Class Bzns")));
                    trans.Rollback();
                }
                finally
                {
                    trans = null;
                }
            }

            return(Result);
        }
예제 #26
0
	public void ExecActionInObjects(InitObject action) {

		for(int i = 0; i < _polledAmount; i++)
			action (_pool [i]);
	}
예제 #27
0
        public bool InsertPlan(string AcadYear, int PlanTitlePos, int PlanDescriptionPos, DataTable Plans, bool IsTry2Import)
        {
            var Result         = false;
            var KindergartenId = BznsBase.KindergartenId;
            var BrandId        = BznsBase.BrandID;
            var UserID         = BznsBase.UserID;
            var Sql            = string.Empty;
            var PlanID         = string.Empty;
            var CreateDate     = InitObject.GetSysDate();

            using (MySqlConnection conn = new MySqlConnection(BznsBase.GetConnectionString))
            {
                MySqlTransaction trans = null;
                conn.Open();
                trans = conn.BeginTransaction();

                try
                {
                    foreach (DataRow dr in Plans.Rows)
                    {
                        PlanID = InitObject.GetUUID();
                        var PlanTitle       = PlanTitlePos == -1 ? string.Empty : dr[PlanTitlePos].ToString();
                        var PlanDescription = PlanDescriptionPos == -1 ? string.Empty : dr[PlanDescriptionPos].ToString();

                        try
                        {
                            Sql = string.Format(InitObject.GetScriptServiceInstance().ClassPlanInsert, PlanID, AcadYear, PlanTitle, PlanDescription, UserID, KindergartenId, BrandId, CreateDate);
                            DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);

                            Sql = string.Format(InitObject.GetScriptServiceInstance().ClassPlanLogInsert, InitObject.GetUUID(), PlanID, "开班计划申请", UserID, CreateDate, "", "", CreateDate);
                            DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);

                            Sql = string.Format(InitObject.GetScriptServiceInstance().ClassPlanLogInsert, InitObject.GetUUID(), PlanID, "开班计划审核", BznsBase.BrandUserID, CreateDate, "同意", "已审核通过", CreateDate);
                            DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                        }
                        catch (Exception ex)
                        {
                            SysLog.Insert(new SysLogInfo(string.Concat("Import Plan LogID:", dr["LogID"].ToString(), " Error Message:", ex.Message), SysLogType.ERROR, ModuleName));
                        }
                        finally {
                        }
                    }

                    if (IsTry2Import)
                    {
                        trans.Rollback();
                    }
                    else
                    {
                        trans.Commit();
                    }

                    Result = true;
                }
                catch (Exception ex)
                {
                    SysLog.Insert(new SysLogInfo(ex.Message.ToString(), SysLogType.ERROR, string.Concat(ModuleName, " - ", "Import Class Plan Bzns")));
                    trans.Rollback();
                }
                finally
                {
                    trans = null;
                }
            }

            return(Result);
        }
예제 #28
0
        public bool UpdateRelationship(DataTable Students)
        {
            var Result     = false;
            var Sql        = string.Empty;
            var UpdateDate = InitObject.GetSysDate();

            try
            {
                using (MySqlConnection conn = new MySqlConnection(BznsBase.GetConnectionString))
                {
                    MySqlTransaction trans = null;
                    conn.Open();
                    trans = conn.BeginTransaction();

                    try
                    {
                        //foreach (DataRow dr in Students.Rows)
                        //{
                        //    var StudentNo = dr[2].ToString();
                        //    var p1 = dr[7].ToString();
                        //    var r1 = dr[8].ToString();
                        //    var p2 = dr[11].ToString();
                        //    var r2 = dr[12].ToString();
                        //    var StudentInfo = new StudentInfo();
                        //    var dt = new DataTable();

                        //    Sql = string.Format(InitObject.GetScriptServiceInstance().GetClassIDByStudentID, StudentNo);
                        //    dt = DBHelper.MySqlHelper.GetDataSet(BznsBase.GetConnectionString, BznsBase.GetCommandType, Sql, null).Tables[0];

                        //    if (dt.Rows.Count > 0)
                        //    {
                        //        StudentInfo.ClassId = dt.Rows[0]["class_id"].ToString();
                        //        StudentInfo.StudentId = dt.Rows[0]["stu_id"].ToString();
                        //    }

                        //    if (!string.IsNullOrEmpty(r1) && !string.IsNullOrEmpty(p1)) {
                        //        Sql = string.Format(InitObject.GetScriptServiceInstance().UpdateRelationship, InitObject.GetRelationshipCodeByName(r1), StudentInfo.StudentId,p1);
                        //        DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                        //    }

                        //    if (!string.IsNullOrEmpty(r2) && !string.IsNullOrEmpty(p2))
                        //    {
                        //        Sql = string.Format(InitObject.GetScriptServiceInstance().UpdateRelationship, InitObject.GetRelationshipCodeByName(r2), StudentInfo.StudentId,p2);
                        //        DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                        //    }

                        //}

                        trans.Commit();
                    }
                    catch (Exception ex)
                    {
                        trans.Rollback();
                    }
                    finally
                    {
                        trans = null;
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
            }
            return(Result);
        }
예제 #29
0
        public bool Insert(int NamePos, int EmailPos, int SexPos, int MobilePos, int RolePos, int KindergartenPos, DataTable Users, bool IsTry2Import)
        {
            var result     = false;
            var Sql        = string.Empty;
            var CreateDate = InitObject.GetSysDate();

            using (MySqlConnection conn = new MySqlConnection(BznsBase.GetConnectionString))
            {
                MySqlTransaction trans = null;
                conn.Open();
                trans = conn.BeginTransaction();

                try
                {
                    foreach (DataRow dr in Users.Rows)
                    {
                        var UserId = InitObject.GetUUID();

                        var Name             = NamePos == -1 ? string.Empty : dr[NamePos].ToString().Trim();
                        var Email            = EmailPos == -1 ? string.Empty : dr[EmailPos].ToString().Trim();
                        var Sex              = SexPos == -1 ? 0 : dr[SexPos].ToString().Trim() == "男"? 1:0;
                        var Mobile           = MobilePos == -1 ? string.Empty : dr[MobilePos].ToString().Trim();
                        var Role             = RolePos == -1 ? string.Empty : dr[RolePos].ToString().Trim();
                        var Kindergarten     = KindergartenPos == -1 ? string.Empty : dr[KindergartenPos].ToString().Trim();
                        var RoleInfo         = new RoleInfo();
                        var KindergartenInfo = new KindergartenInfo();
                        var ret              = 0;

                        if (!string.IsNullOrEmpty(Role.Trim()))
                        {
                            RoleInfo = InitObject.GetRoleInfoByTitle(Role.Trim());
                        }

                        if (!string.IsNullOrEmpty(Kindergarten.Trim()))
                        {
                            KindergartenInfo = InitObject.GetKindergartenInfoByName(Kindergarten.Trim());
                        }


                        try
                        {
                            if (!string.IsNullOrEmpty(Email.Trim()) && !string.IsNullOrEmpty(Name.Trim()) && !string.IsNullOrEmpty(RoleInfo.RoleId) && !string.IsNullOrEmpty(KindergartenInfo.Id))
                            {
                                // Insert into upms user

                                Sql = string.Format(InitObject.GetScriptServiceInstance().UserInsert, UserId, Name, BznsBase.UserPassword, BznsBase.UserPasswordSalt, Name, Mobile, Email, KindergartenInfo.Id, BznsBase.BrandID, Sex);
                                ret = DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);

                                // Insert into upms role

                                var UserRoleId = InitObject.GetUUID();

                                if (ret > 0)
                                {
                                    ret = 0;
                                    Sql = string.Format(InitObject.GetScriptServiceInstance().RoleInsert, UserRoleId, UserId, RoleInfo.RoleId);
                                    ret = DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                                }

                                // Insert into user kindergarten

                                if (ret > 0)
                                {
                                    ret = 0;
                                    Sql = string.Format(InitObject.GetScriptServiceInstance().UserKindergartenInsert, UserId, KindergartenInfo.Id);
                                    ret = DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            SysLog.Insert(new SysLogInfo(string.Concat("Import Users LogID:", dr["LogID"].ToString(), " Error Message:", ex.Message), SysLogType.ERROR, ModuleName));
                        }
                        finally
                        {
                        }
                    }

                    if (IsTry2Import)
                    {
                        trans.Rollback();
                    }
                    else
                    {
                        trans.Commit();
                    }

                    result = true;
                }
                catch (Exception ex)
                {
                    SysLog.Insert(new SysLogInfo(ex.Message.ToString(), SysLogType.ERROR, string.Concat(ModuleName)));
                    trans.Rollback();
                }
                finally
                {
                    trans = null;
                }
            }


            return(result);
        }
예제 #30
0
        public bool InsertTeacher(bool IsTry2Import, DataTable Teachers, int NamePos, int LastNamePos, int FirstNamePos, int SexPos, int NationalityPos, int NationPos, int IDCardTypePos, int IDCardNoPos, int BirthdayPos, int MobileNoPos, int EmailAddressPos, int IsPreEduPos, int ForeignNationalityPos, int TeacherLevelPos, int EduQualificationPos, int ProfessionPos, int UniversityPos, int ClassIdPos, int KindergartenIdPos, int AccountPos)
        {
            var result     = false;
            var Sql        = string.Empty;
            var CreateDate = InitObject.GetSysDate();

            using (MySqlConnection conn = new MySqlConnection(BznsBase.GetConnectionString))
            {
                MySqlTransaction trans = null;
                conn.Open();
                trans = conn.BeginTransaction();

                try
                {
                    foreach (DataRow dr in Teachers.Rows)
                    {
                        var TeacherID = InitObject.GetUUID();

                        var TeacherName        = NamePos == -1 ? string.Empty : dr[NamePos].ToString().Trim();
                        var LastName           = LastNamePos == -1 ? string.Empty : dr[LastNamePos].ToString().Trim();
                        var FirstName          = FirstNamePos == -1 ? string.Empty : dr[FirstNamePos].ToString().Trim();
                        var Sex                = SexPos == -1 ? string.Empty : InitObject.GetSexByName(dr[SexPos].ToString().Trim());
                        var Nationality        = NationalityPos == -1 ? string.Empty : dr[NationalityPos].ToString().Trim();
                        var Nation             = NationPos == -1 ? string.Empty : InitObject.GetNationCodeByName(dr[NationPos].ToString().Trim());
                        var IDCardType         = IDCardTypePos == -1 ? string.Empty : InitObject.GetIdType(dr[IDCardTypePos].ToString().Trim());
                        var IDCardNo           = IDCardNoPos == -1 ? string.Empty : dr[IDCardNoPos].ToString().Trim();
                        var Birthday           = BirthdayPos == -1 ? string.Empty : dr[BirthdayPos].ToString().Trim();
                        var MobileNo           = MobileNoPos == -1 ? string.Empty : dr[MobileNoPos].ToString().Trim();
                        var EmailAddress       = EmailAddressPos == -1 ? string.Empty : dr[EmailAddressPos].ToString().Trim();
                        var IsPreEdu           = IsPreEduPos == -1 ? string.Empty : dr[IsPreEduPos].ToString().Trim();
                        var ForeignNationality = ForeignNationalityPos == -1 ? string.Empty : dr[ForeignNationalityPos].ToString().Trim();
                        var TeacherLevel       = TeacherLevelPos == -1 ? string.Empty : InitObject.GetTeacherLevel(dr[TeacherLevelPos].ToString().Trim());
                        var EduQualification   = EduQualificationPos == -1 ? string.Empty : InitObject.GetEducationCodeByName(dr[EduQualificationPos].ToString().Trim());
                        var Profession         = ProfessionPos == -1 ? string.Empty : dr[ProfessionPos].ToString().Trim();
                        var University         = UniversityPos == -1 ? string.Empty : dr[UniversityPos].ToString().Trim();
                        var iSex               = 0;
                        var ClassId            = ClassIdPos == -1 ? string.Empty : dr[ClassIdPos].ToString().Trim();
                        var KindergartenId     = KindergartenIdPos == -1 ? string.Empty : dr[KindergartenIdPos].ToString().Trim();
                        var Account            = AccountPos == -1 ? string.Empty : dr[AccountPos].ToString().Trim();


                        try
                        {
                            if (string.IsNullOrEmpty(KindergartenId))
                            {
                                KindergartenId = BznsBase.KindergartenId;
                            }

                            Sql = string.Format(InitObject.GetScriptServiceInstance().TeacherInsert, TeacherID, KindergartenId, TeacherName, LastName, FirstName, Sex, Nationality, Nation, IDCardType, IDCardNo, Birthday, Account, EmailAddress, IsPreEdu, ForeignNationality, TeacherLevel, EduQualification, Profession, University, BznsBase.UserID, CreateDate);
                            var ret = DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);

                            if (!string.IsNullOrEmpty(ClassId) && ret > 0)
                            {
                                Sql = string.Format(InitObject.GetScriptServiceInstance().TeacherClassInsert, ClassId, TeacherID, "STAFFTYPE02", 'N');
                                DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                            }

                            if (ret > 0)
                            {
                                if (Sex == "M")
                                {
                                    iSex = 1;
                                }

                                Sql = string.Format(InitObject.GetScriptServiceInstance().UserInsert, TeacherID, Account, BznsBase.UserPassword, BznsBase.UserPasswordSalt, TeacherName, MobileNo, EmailAddress, KindergartenId, BznsBase.BrandID, iSex);

                                if (DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null) > 0)
                                {
                                    // 8daa29e88498480aad68683c361a451e 保育员
                                    Sql = string.Format(InitObject.GetScriptServiceInstance().RoleInsert, InitObject.GetUUID(), TeacherID, "ed40b872ec1a48dea57819e58fbff1a7");
                                    DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);

                                    Sql = string.Format(InitObject.GetScriptServiceInstance().UserKindergartenInsert, TeacherID, KindergartenId);
                                    ret = DBHelper.MySqlHelper.ExecuteNonQuery(trans, BznsBase.GetCommandType, Sql, null);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            SysLog.Insert(new SysLogInfo(string.Concat("Import Teacher LogID:", dr["LogID"].ToString(), " Error Message:", ex.Message), SysLogType.ERROR, ModuleName));
                        }
                        finally
                        {
                        }
                    }

                    if (IsTry2Import)
                    {
                        trans.Rollback();
                    }
                    else
                    {
                        trans.Commit();
                    }

                    result = true;
                }
                catch (Exception ex)
                {
                    SysLog.Insert(new SysLogInfo(ex.Message.ToString(), SysLogType.ERROR, string.Concat(ModuleName, " - ", "Import Teacher Bzns")));
                    trans.Rollback();
                }
                finally
                {
                    trans = null;
                }
            }


            return(result);
        }
예제 #31
0
        public void Parse()
        {
            var current = _reader.BaseStream.Position;

            _reader.BaseStream.Seek(_offset, SeekOrigin.Begin);
            bool parsing     = true;
            bool branched    = false;
            int  branchBytes = 0;

            while (parsing)
            {
                //now reader the instructions
                var type    = _reader.ReadByteAsEnum <InstructionType>();
                var aligned = InstructionAlignment.IsAligned(type);

                if (aligned)
                {
                    var padding = _reader.Align(4);
                    if (padding > 0)
                    {
                        Items.Add(new Padding(padding));
                        if (branched)
                        {
                            branchBytes -= (int)padding;

                            if (branchBytes <= 0)
                            {
                                branched    = false;
                                branchBytes = 0;
                            }
                        }
                    }
                }

                InstructionBase instruction = null;
                List <Value>    parameters  = new List <Value>();

                switch (type)
                {
                case InstructionType.ToNumber:
                    instruction = new ToNumber();
                    break;

                case InstructionType.NextFrame:
                    instruction = new NextFrame();
                    break;

                case InstructionType.Play:
                    instruction = new Play();
                    break;

                case InstructionType.Stop:
                    instruction = new Stop();
                    break;

                case InstructionType.Add:
                    instruction = new Add();
                    break;

                case InstructionType.Subtract:
                    instruction = new Subtract();
                    break;

                case InstructionType.Multiply:
                    instruction = new Multiply();
                    break;

                case InstructionType.Divide:
                    instruction = new Divide();
                    break;

                case InstructionType.Not:
                    instruction = new Not();
                    break;

                case InstructionType.StringEquals:
                    instruction = new StringEquals();
                    break;

                case InstructionType.Pop:
                    instruction = new Pop();
                    break;

                case InstructionType.ToInteger:
                    instruction = new ToInteger();
                    break;

                case InstructionType.GetVariable:
                    instruction = new GetVariable();
                    break;

                case InstructionType.SetVariable:
                    instruction = new SetVariable();
                    break;

                case InstructionType.StringConcat:
                    instruction = new StringConcat();
                    break;

                case InstructionType.GetProperty:
                    instruction = new GetProperty();
                    break;

                case InstructionType.SetProperty:
                    instruction = new SetProperty();
                    break;

                case InstructionType.Trace:
                    instruction = new Trace();
                    break;

                case InstructionType.Delete:
                    instruction = new Delete();
                    break;

                case InstructionType.Delete2:
                    instruction = new Delete2();
                    break;

                case InstructionType.DefineLocal:
                    instruction = new DefineLocal();
                    break;

                case InstructionType.CallFunction:
                    instruction = new CallFunction();
                    break;

                case InstructionType.Return:
                    instruction = new Return();
                    break;

                case InstructionType.NewObject:
                    instruction = new NewObject();
                    break;

                case InstructionType.InitArray:
                    instruction = new InitArray();
                    break;

                case InstructionType.InitObject:
                    instruction = new InitObject();
                    break;

                case InstructionType.TypeOf:
                    instruction = new InitObject();
                    break;

                case InstructionType.Add2:
                    instruction = new Add2();
                    break;

                case InstructionType.LessThan2:
                    instruction = new LessThan2();
                    break;

                case InstructionType.Equals2:
                    instruction = new Equals2();
                    break;

                case InstructionType.ToString:
                    instruction = new ToString();
                    break;

                case InstructionType.PushDuplicate:
                    instruction = new PushDuplicate();
                    break;

                case InstructionType.GetMember:
                    instruction = new GetMember();
                    break;

                case InstructionType.SetMember:
                    instruction = new SetMember();
                    break;

                case InstructionType.Increment:
                    instruction = new Increment();
                    break;

                case InstructionType.Decrement:
                    instruction = new Decrement();
                    break;

                case InstructionType.CallMethod:
                    instruction = new CallMethod();
                    break;

                case InstructionType.Enumerate2:
                    instruction = new Enumerate2();
                    break;

                case InstructionType.EA_PushThis:
                    instruction = new PushThis();
                    break;

                case InstructionType.EA_PushZero:
                    instruction = new PushZero();
                    break;

                case InstructionType.EA_PushOne:
                    instruction = new PushOne();
                    break;

                case InstructionType.EA_CallFunc:
                    instruction = new CallFunc();
                    break;

                case InstructionType.EA_CallMethodPop:
                    instruction = new CallMethodPop();
                    break;

                case InstructionType.BitwiseXOr:
                    instruction = new BitwiseXOr();
                    break;

                case InstructionType.Greater:
                    instruction = new Greater();
                    break;

                case InstructionType.EA_PushThisVar:
                    instruction = new PushThisVar();
                    break;

                case InstructionType.EA_PushGlobalVar:
                    instruction = new PushGlobalVar();
                    break;

                case InstructionType.EA_ZeroVar:
                    instruction = new ZeroVar();
                    break;

                case InstructionType.EA_PushTrue:
                    instruction = new PushTrue();
                    break;

                case InstructionType.EA_PushFalse:
                    instruction = new PushFalse();
                    break;

                case InstructionType.EA_PushNull:
                    instruction = new PushNull();
                    break;

                case InstructionType.EA_PushUndefined:
                    instruction = new PushUndefined();
                    break;

                case InstructionType.GotoFrame:
                    instruction = new GotoFrame();
                    parameters.Add(Value.FromInteger(_reader.ReadInt32()));
                    break;

                case InstructionType.GetURL:
                    instruction = new GetUrl();
                    parameters.Add(Value.FromString(_reader.ReadStringAtOffset()));
                    parameters.Add(Value.FromString(_reader.ReadStringAtOffset()));
                    break;

                case InstructionType.SetRegister:
                    instruction = new SetRegister();
                    parameters.Add(Value.FromInteger(_reader.ReadInt32()));
                    break;

                case InstructionType.ConstantPool:
                {
                    instruction = new ConstantPool();
                    var count     = _reader.ReadUInt32();
                    var constants = _reader.ReadFixedSizeArrayAtOffset <uint>(() => _reader.ReadUInt32(), count);

                    foreach (var constant in constants)
                    {
                        parameters.Add(Value.FromConstant(constant));
                    }
                }
                break;

                case InstructionType.GotoLabel:
                    instruction = new GotoLabel();
                    parameters.Add(Value.FromString(_reader.ReadStringAtOffset()));
                    break;

                case InstructionType.DefineFunction2:
                {
                    instruction = new DefineFunction2();
                    var name       = _reader.ReadStringAtOffset();
                    var nParams    = _reader.ReadUInt32();
                    var nRegisters = _reader.ReadByte();
                    var flags      = _reader.ReadUInt24();

                    //list of parameter strings
                    var paramList = _reader.ReadFixedSizeListAtOffset <FunctionArgument>(() => new FunctionArgument()
                        {
                            Register  = _reader.ReadInt32(),
                            Parameter = _reader.ReadStringAtOffset(),
                        }, nParams);

                    parameters.Add(Value.FromString(name));
                    parameters.Add(Value.FromInteger((int)nParams));
                    parameters.Add(Value.FromInteger((int)nRegisters));
                    parameters.Add(Value.FromInteger((int)flags));
                    foreach (var param in paramList)
                    {
                        parameters.Add(Value.FromInteger(param.Register));
                        parameters.Add(Value.FromString(param.Parameter));
                    }
                    //body size of the function
                    parameters.Add(Value.FromInteger(_reader.ReadInt32()));
                    //skip 8 bytes
                    _reader.ReadUInt64();
                }
                break;

                case InstructionType.PushData:
                {
                    instruction = new PushData();

                    var count     = _reader.ReadUInt32();
                    var constants = _reader.ReadFixedSizeArrayAtOffset <uint>(() => _reader.ReadUInt32(), count);

                    foreach (var constant in constants)
                    {
                        parameters.Add(Value.FromConstant(constant));
                    }
                }
                break;

                case InstructionType.BranchAlways:
                    instruction = new BranchAlways();
                    if (!branched)
                    {
                        branchBytes = _reader.ReadInt32();
                        parameters.Add(Value.FromInteger(branchBytes));

                        if (branchBytes > 0)
                        {
                            branchBytes += (int)instruction.Size + 1;
                            branched     = true;
                        }
                    }
                    else
                    {
                        parameters.Add(Value.FromInteger(_reader.ReadInt32()));
                    }
                    break;

                case InstructionType.GetURL2:
                    instruction = new GetUrl2();
                    break;

                case InstructionType.DefineFunction:
                {
                    instruction = new DefineFunction();
                    var name = _reader.ReadStringAtOffset();
                    //list of parameter strings
                    var paramList = _reader.ReadListAtOffset <string>(() => _reader.ReadStringAtOffset());

                    parameters.Add(Value.FromString(name));
                    parameters.Add(Value.FromInteger(paramList.Count));
                    foreach (var param in paramList)
                    {
                        parameters.Add(Value.FromString(param));
                    }
                    //body size of the function
                    parameters.Add(Value.FromInteger(_reader.ReadInt32()));
                    //skip 8 bytes
                    _reader.ReadUInt64();
                }
                break;

                case InstructionType.BranchIfTrue:
                    instruction = new BranchIfTrue();
                    if (!branched)
                    {
                        branchBytes = _reader.ReadInt32();
                        parameters.Add(Value.FromInteger(branchBytes));

                        if (branchBytes > 0)
                        {
                            branchBytes += (int)instruction.Size + 1;
                            branched     = true;
                        }
                    }
                    else
                    {
                        parameters.Add(Value.FromInteger(_reader.ReadInt32()));
                    }
                    break;

                case InstructionType.GotoFrame2:
                    instruction = new GotoFrame2();
                    parameters.Add(Value.FromInteger(_reader.ReadByte()));
                    break;

                case InstructionType.EA_PushString:
                    instruction = new PushString();
                    //the constant id that should be pushed
                    parameters.Add(Value.FromString(_reader.ReadStringAtOffset()));
                    break;

                case InstructionType.EA_PushConstantByte:
                    instruction = new PushConstantByte();
                    //the constant id that should be pushed
                    parameters.Add(Value.FromConstant(_reader.ReadByte()));
                    break;

                case InstructionType.EA_GetStringVar:
                    instruction = new GetStringVar();
                    parameters.Add(Value.FromString(_reader.ReadStringAtOffset()));
                    break;

                case InstructionType.EA_SetStringVar:
                    instruction = new SetStringMember();
                    parameters.Add(Value.FromString(_reader.ReadStringAtOffset()));
                    break;

                case InstructionType.EA_GetStringMember:
                    instruction = new GetStringMember();
                    parameters.Add(Value.FromString(_reader.ReadStringAtOffset()));
                    break;

                case InstructionType.EA_SetStringMember:
                    instruction = new SetStringMember();
                    parameters.Add(Value.FromString(_reader.ReadStringAtOffset()));
                    break;

                case InstructionType.EA_PushValueOfVar:
                    instruction = new PushValueOfVar();
                    //the constant id that should be pushed
                    parameters.Add(Value.FromConstant(_reader.ReadByte()));
                    break;

                case InstructionType.EA_GetNamedMember:
                    instruction = new GetNamedMember();
                    parameters.Add(Value.FromConstant(_reader.ReadByte()));
                    break;

                case InstructionType.EA_CallNamedFuncPop:
                    instruction = new CallNamedFuncPop();
                    parameters.Add(Value.FromConstant(_reader.ReadByte()));
                    break;

                case InstructionType.EA_CallNamedFunc:
                    instruction = new CallNamedFunc();
                    parameters.Add(Value.FromConstant(_reader.ReadByte()));
                    break;

                case InstructionType.EA_CallNamedMethodPop:
                    instruction = new CallNamedMethodPop();
                    parameters.Add(Value.FromConstant(_reader.ReadByte()));
                    break;

                case InstructionType.EA_PushFloat:
                    instruction = new PushFloat();
                    parameters.Add(Value.FromFloat(_reader.ReadSingle()));
                    break;

                case InstructionType.EA_PushByte:
                    instruction = new PushByte();
                    parameters.Add(Value.FromInteger(_reader.ReadByte()));
                    break;

                case InstructionType.EA_PushShort:
                    instruction = new PushShort();
                    parameters.Add(Value.FromInteger(_reader.ReadUInt16()));
                    break;

                case InstructionType.End:
                    instruction = new End();

                    if (!branched)
                    {
                        parsing = false;
                    }
                    break;

                case InstructionType.EA_CallNamedMethod:
                    instruction = new CallNamedMethod();
                    parameters.Add(Value.FromConstant(_reader.ReadByte()));
                    break;

                case InstructionType.Var:
                    instruction = new Var();

                    break;

                default:
                    throw new InvalidDataException("Unimplemented bytecode instruction:" + type.ToString());
                }

                if (instruction != null)
                {
                    instruction.Parameters = parameters;
                    Items.Add(instruction);
                }

                if (branched)
                {
                    branchBytes -= (int)instruction.Size + 1;

                    if (branchBytes <= 0)
                    {
                        branched = false;
                    }
                }
            }
            _reader.BaseStream.Seek(current, SeekOrigin.Begin);
        }
예제 #32
0
 public ButtonConfig(InitObject configInit, string displayText, ButtonPressedHandler handler)
     : base(configInit)
 {
     DisplayText = displayText;
     Handler     = handler;
 }