Ejemplo n.º 1
0
 public Item GetItemModel(CsvItem csv)
 {
     return(new Item()
     {
         Id = csv.Id,
         Name = csv.Name,
         Price = csv.Price,
         SmallImageUrl = csv.SmallImageUrl,
         ImageUrl = csv.ImageUrl,
         CardImageUrl = csv.CardImageUrl,
         Description = csv.Description,
         ItemTypeId = csv.ItemTypeId,
         SubTypeId = csv.SubTypeId,
         Refinable = csv.Refinable,
         Attack = csv.Attack,
         MagicAttack = csv.MagicAttack,
         RequiredLevel = csv.RequiredLevel,
         LimitLevel = csv.LimitLevel,
         ItemLevel = csv.ItemLevel,
         Weight = csv.Weight,
         Defense = csv.Defense,
         Slots = csv.Slots,
         UnidName = csv.UnidName,
         CardPrefix = csv.CardPrefix,
     });
 }
Ejemplo n.º 2
0
        /// <summary>
        /// CSVファイル読み込み処理
        /// </summary>
        /// <param name="row"></param>
        /// <param name="file"></param>
        /// <param name="rowCount"></param>
        /// <returns></returns>
        private CsvItem ReadCsvItem(string[] row)
        {
            //2.項目が抜けている場合の対策
            CsvItem item = new CsvItem();

            item.OrderNumber        = row[0];
            item.ScheduledOn        = row[1];
            item.ProcessingDivision = row[2];
            item.StudyTypeCode      = row[3];
            item.StudyTypeName      = row[4];
            item.PatientId          = row[5];
            item.PatientKanjiName   = row[6];
            item.PatientKanaName    = row[7];
            item.PatientBirthDate   = row[8];
            item.PatientGender      = row[9];

            //3.撮影項目コードと撮影項目名称が対になっていない場合の対策
            //撮影項目コードと撮影項目名称をセットにする
            item.ShotItemSet = this.ShotItemSet(row);

            //4.Validation Errorの対策
            ValidationError validation = new ValidationError();

            validation.ValidateItems(item);

            return(item);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// CSVファイルの各項目のバリデーション
        /// </summary>
        /// <param name="item"></param>
        public void ValidateItems(CsvItem item)
        {
            //オーダー番号のバリデーション
            ValidateOrderNumber(item.OrderNumber);
            //検査日付のバリデーション
            ValidateScheduledOn(item.ScheduledOn);
            //処理区分のバリデーション
            ValidateProcessingDivision(item.ProcessingDivision);
            //検査種別コードのバリデーション
            ValidateStudyTypeCode(item.StudyTypeCode);
            //検査種別名称のバリデーション
            ValidateStudyTypeName(item.StudyTypeName);
            //患者IDのバリデーション
            ValidatePatientId(item.PatientId);
            //患者漢字氏名のバリデーション
            ValidatePatientKanjiName(item.PatientKanjiName);
            //患者カナ氏名のバリデーション
            ValidatePatientKanaName(item.PatientKanaName);
            //生年月日のバリデーション
            ValidatePatientBirthDate(item.PatientBirthDate);
            //性別のバリデーション
            ValidatePatientGender(item.PatientGender);

            foreach (var shotItem in item.ShotItemSet)
            {
                //撮影項目コードのバリデーション
                ValidateShotItemCode(shotItem.ShotItemCode);
                //撮影項目名称のバリデーション
                ValidateShotItemName(shotItem.ShotItemName);
            }
        }
Ejemplo n.º 4
0
    public static void Main()
    {
        string inputCSV = @"""Type"":""#Microsoft.Azure"",""Email"":""*****@*****.**"",""DisplayName"":""abc"",""Dpt"":""home""
""Type"":""#Microsoft.Azure"",""Email"":""*****@*****.**"",""DisplayName"":""xyz"",""Dpt"":""home""";

        // ReadAllLines mock
        string[] lines = inputCSV.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
        { // The Json Way
            var bringJsonBack = "[\n{" + string.Join("},\n{", lines) + "}\n]";
            var results       = JsonConvert.DeserializeObject <List <CsvItem> >(bringJsonBack);
            results.Dump();
        }
        { // Your working way
            var results = new List <CsvItem>();
            foreach (var line in lines)
            {
                var      temp  = new CsvItem();
                string[] strS1 = line.Split(',');
                foreach (string S1 in strS1)
                {
                    string[] strS2 = S1.Split(':');

                    // You have a part Before the : and one after we just string check to know what property we re on.
                    if (strS2[0].Trim('"') == "Email")
                    {
                        temp.Email = strS2[1].Trim('"');
                    }
                    if (strS2[0].Trim('"') == "DisplayName")
                    {
                        temp.DisplayName = strS2[1].Trim('"');
                    }
                    if (strS2[0].Trim('"') == "Dpt")
                    {
                        temp.Dpt = strS2[1].Trim('"');
                    }
                }
                results.Add(temp);
            }
            results.Dump();
        }
        { // LinQ Version of your algo.
            var results = lines
                          .Select(x => x.Split(','))
                          .Select(x =>
                                  new CsvItem
            {
                Email       = x[1].Split(':')[1].Trim('"'),
                DisplayName = x[2].Split(':')[1].Trim('"'),
                Dpt         = x[3].Split(':')[1].Trim('"')
            })
                          .ToList();
            results.Dump();
        }
    }
Ejemplo n.º 5
0
        /// <summary>
        /// 患者テーブルに患者情報を登録
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        private Patients RegisterPatient(CsvItem item)
        {
            Patients patient = new Patients();

            patient.PatientId        = item.PatientId;
            patient.PatientKanjiName = item.PatientKanjiName;
            patient.PatientKanaName  = item.PatientKanaName;
            patient.PatientBirthDate = DateTime.Parse(item.PatientBirthDate);
            patient.PatientGender    = item.PatientGender;

            return(patient);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 検査テーブルに検査情報を登録
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        private ValidatedStudyItems RegisterStudy(CsvItem item)
        {
            ValidatedStudyItems studyItems = new ValidatedStudyItems();

            studyItems.OrderNumber        = int.Parse(item.OrderNumber);
            studyItems.ScheduledOn        = DateTime.Parse(item.ScheduledOn);
            studyItems.ProcessingDivision = int.Parse(item.ProcessingDivision);
            studyItems.StudyTypeCode      = item.StudyTypeCode;
            studyItems.StudyTypeName      = item.StudyTypeName;
            studyItems.ShotItemSet        = item.ShotItemSet;

            return(studyItems);
        }
 public static Item ToImmutableItem(this CsvItem source)
 {
     return
         (new Item()
     {
         Id = source.Id,
         Name = source.Name,
         Manufacturer = source.Manufacturer,
         Model = source.Model,
         Quantity = source.Quantity,
         Category = source.Category,
         Spec = source.Spec,
         Appearance = source.Appearance,
         AssignedLocation = source.AssignedLocation,
         CurrentLocation = source.CurrentLocation,
         IsLoan = source.IsLoan,
         Origin = source.Origin,
         AdditionalInformation = source.AdditionalInformation,
         Photos = source.Photos.ToList()
     });
 }
Ejemplo n.º 8
0
    public DataItem(MapChipCSV _mapChip, CsvItem _csvItem)
    {
        CsvItemData item_data = new CsvItemData();

        foreach (CsvItemData data in _csvItem.All)
        {
            if (data.item_id == _mapChip.item_id)
            {
                item_data = data;
            }
        }

        item_serial  = _mapChip.serial;
        item_id      = _mapChip.item_id;
        category     = item_data.category;
        x            = _mapChip.x;
        y            = _mapChip.y;
        width        = item_data.size; //_mapChip.width
        height       = item_data.size; //_mapChip.height
        status       = 1;
        level        = 1;
        collect_time = TimeManager.StrNow();;
        create_time  = TimeManager.StrNow();;
    }
Ejemplo n.º 9
0
        /// <summary>
        /// CSVファイル取り込み処理
        /// </summary>
        public void Import()
        {
            //フォルダの設定
            monitoredFolderPath = Settings.Default.MonitoredFolder;
            errorFolderPath     = Settings.Default.ErrorFolder;
            processedFolderPath = Settings.Default.ProcessedFolder;

            //ファイル形式の設定
            fileFormat = Settings.Default.FileFormat;

            //監視対象フォルダ内のCSVファイルを取得
            IEnumerable <string> Monitoredfiles = Directory.EnumerateFiles(monitoredFolderPath, fileFormat, System.IO.SearchOption.AllDirectories);

            try
            {
                foreach (string file in Monitoredfiles)
                {
                    using (TextFieldParser parser = new TextFieldParser(file, Encoding.GetEncoding(932)))
                    {
                        //ヘッダ行読み飛ばし
                        parser.ReadLine();
                        //行数の初期値(2行目から取り込み)
                        int rowCount = 2;

                        //1.フォーマットが不正の場合の対策
                        parser.TextFieldType = FieldType.Delimited;
                        //区切り文字を「,」に設定
                        parser.SetDelimiters(",");

                        //読み込むべき行がまだ残っているかどうか判定
                        while (!parser.EndOfData)
                        {
                            try
                            {
                                //現在行のフィールドを配列に入れる
                                string[] row = parser.ReadFields();
                                //CSV項目クラスに入れる
                                CsvItem items = this.ReadCsvItem(row);
                                //患者情報を登録
                                string patientId = DbManager.ImportPatientInfo(RegisterPatient(items));
                                //検査情報を登録
                                DbManager.ImportStudyInfo(patientId, RegisterStudy(items));
                                //読み込んだファイルは処理済みフォルダへ移動
                                this.TransferToProcessedFolder(file);
                            }
                            catch (Exception e)
                            {
                                int retryLeft = 0;

                                //指定された回数だけ再処理
                                if (retryLeft < Settings.Default.RetryCount)
                                {
                                    retryLeft++;

                                    parser.Close();

                                    Import();
                                }
                                else
                                {
                                    //読み込めないファイルはエラーフォルダへ移動
                                    this.TransferToErrorFolder(file);

                                    logger.Error(e.Message);
                                    logger.Error(file);
                                    logger.Error(rowCount);
                                }
                            }

                            rowCount++;
                        }
                    }
                }
            }
            catch (DirectoryNotFoundException ex)
            {
                logger.Error(ex.Message);
                logger.Error(monitoredFolderPath);
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message);
            }
        }
Ejemplo n.º 10
0
    // Update is called once per frame
    void Update()
    {
        bool bInit = false;

        if (m_eStepPre != m_eStep)
        {
            m_eStepPre = m_eStep;
            bInit      = true;
        }

        switch (m_eStep)
        {
        case STEP.DATAMANAGER_SETUP:
            if (bInit)
            {
                /*
                 * GameObject pref = PrefabManager.Instance.PrefabLoadInstance ("test");
                 * paramtest script = pref.GetComponent<paramtest> ();
                 * Debug.Log (script.list.Count);
                 * script.list.Add (new DataItem ());
                 */
            }


            if (SpriteManager.Instance.IsIdle())
            {
                m_goRoot.SetActive(true);
                m_btnStart.gameObject.SetActive(false);
                m_eStep = STEP.SOUND_LOAD;
            }
            if (m_csLoading != null)
            {
                m_csLoading.ViewPercent(0.0f);
            }
            break;

        case STEP.SOUND_LOAD:
            if (bInit)
            {
                foreach (MasterAudioCSV data in DataManager.master_audio_list)
                {
                    if (data.audio_type != 1)
                    {
                        SoundManager.Instance.AddLoadFile(data.filename);
                    }
                }
            }
            if (m_csLoading != null)
            {
                m_csLoading.ViewPercent(0.0f);
            }
            if (SoundManager.Instance.IsIdle())
            {
                m_btnStart.gameObject.SetActive(true);
                m_eStep = STEP.IDLE;

                if (ReviewManager.Instance.IsReadyReview())
                {
                    m_eStep = STEP.REVIEW;
                }
            }
            break;

        case STEP.REVIEW:
            if (bInit)
            {
                GameObject obj = PrefabManager.Instance.MakeObject("prefab/CtrlReviewWindow", m_goRoot.transform.parent.gameObject);
                m_reviewWindow = obj.GetComponent <CtrlReviewWindow> ();
                m_reviewWindow.Initialize();

                m_goRoot.SetActive(false);
            }
            if (m_reviewWindow.IsEnd())
            {
                m_goRoot.SetActive(true);
                Destroy(m_reviewWindow.gameObject);;
                m_eStep = STEP.IDLE;
            }
            break;

        case STEP.IDLE:
            if (bInit)
            {
                m_btnStart.TriggerClear();
                m_btnBackup.TriggerClear();
            }
            if (m_btnStart.ButtonPushed)
            {
                m_eStep = STEP.DB_SETUP;
                SoundManager.Instance.PlaySE("se_cleanup");
            }
            else if (m_btnBackup.ButtonPushed)
            {
                string backupDB = System.IO.Path.Combine(Application.persistentDataPath, Define.DB_NAME_DOUBTSUEN_BK);
                if (System.IO.File.Exists(backupDB) == false)
                {
                    m_eStep = STEP.DB_BACKUP_NOEXIST;
                }
                else
                {
                    m_eStep = STEP.DB_BACKUP_CHECK;
                }
            }
            else
            {
            }

            break;

        case STEP.DB_SETUP:
            if (bInit)
            {
                m_dbItem          = new DBItem(Define.DB_TABLE_ASYNC_ITEM);
                m_dbItemMaster    = new DBItemMaster(Define.DB_TABLE_ASYNC_ITEM_MASTER);
                m_dbWork          = new DBWork(Define.DB_TABLE_ASYNC_WORK);
                m_dbMonster       = new DBMonster(Define.DB_TABLE_ASYNC_MONSTER);
                m_dbMonsterMaster = new DBMonsterMaster(Define.DB_TABLE_ASYNC_MONSTER_MASTER);
                m_dbKvs           = new DBKvs(Define.DB_TABLE_ASYNC_KVS);

                /*
                 * m_dbItem.Open (Define.DB_NAME_DOUBTSUEN, Define.DB_FILE_DIRECTORY, "");
                 * m_dbItemMaster.Open (Define.DB_NAME_DOUBTSUEN, Define.DB_FILE_DIRECTORY, "");
                 * m_dbWork.Open (Define.DB_NAME_DOUBTSUEN, Define.DB_FILE_DIRECTORY, "");
                 * m_dbMonster.Open (Define.DB_NAME_DOUBTSUEN, Define.DB_FILE_DIRECTORY, "");
                 * m_dbMonsterMaster.Open (Define.DB_NAME_DOUBTSUEN, Define.DB_FILE_DIRECTORY, "");
                 * m_tkKvsOpen = m_dbKvs.Open (Define.DB_NAME_DOUBTSUEN, Define.DB_FILE_DIRECTORY, ""); // DEFINE.DB_PASSWORD
                 */
            }
            if (true)
            {
                //if (m_tkKvsOpen.Completed) {

                if (m_dbKvs.ReadInt(Define.USER_SYOJIKIN) == 0)
                {
                    m_dbKvs.WriteInt(Define.USER_SYOJIKIN, 1000);
                }

                List <DataItem> data_item_list = m_dbItem.SelectAll();
                // 最初しか通らない
                if (data_item_list.Count == 0)
                {
                    Debug.LogError("here");
                    m_dbKvs.WriteInt(Define.USER_SYAKKIN, 300000000);
                    var skitMasterTable = new MasterTableMapChip();
                    skitMasterTable.Load();
                    var csvItem = new CsvItem();
                    csvItem.Load();
                    foreach (MapChipCSV csvMapChip in skitMasterTable.All)
                    {
                        DataItem data = new DataItem(csvMapChip, csvItem);
                        m_dbItem.Replace(data);
                    }
                }

                List <DataWork> data_work_list = m_dbWork.SelectAll();
                if (data_work_list.Count == 0)
                {
                    var csvWork = new CsvWork();
                    csvWork.Load();
                    foreach (CsvWorkData csv_work_data in csvWork.All)
                    {
                        DataWork data = new DataWork(csv_work_data);
                        // 最初に出現していいのはappear_work_id== 0とlevel<=1のものだけ
                        if (data.appear_work_id == 0 && data.level <= 1)
                        {
                            data.status = 1;
                        }
                        m_dbWork.Replace(data);
                    }
                }

                List <DataMonster> data_monster_list = m_dbMonster.SelectAll();
                //Debug.LogError( string.Format( "data_monster_list.Count:{0}" , data_monster_list.Count ));
                if (data_monster_list.Count == 0)
                {
                    DataMonster monster = new DataMonster();
                    monster.monster_serial = 1;
                    monster.monster_id     = 1;
                    monster.item_serial    = 12;
                    monster.condition      = (int)Define.Monster.CONDITION.FINE;
                    monster.collect_time   = TimeManager.StrNow();

                    string strHungry = TimeManager.StrGetTime(-1 * 60 * 30);
                    monster.meal_time  = strHungry;
                    monster.clean_time = strHungry;
                    m_dbMonster.Replace(monster);
                }

                List <DataMonsterMaster> data_monster_master_list = m_dbMonsterMaster.SelectAll();
                if (data_monster_master_list.Count == 0)
                {
                    var csvMonsterMaster = new CsvMonster();
                    csvMonsterMaster.Load();
                    foreach (CsvMonsterData csv_monster_master_data in csvMonsterMaster.All)
                    {
                        m_dbMonsterMaster.Replace(csv_monster_master_data);
                    }
                }

                List <DataItemMaster> data_item_master = m_dbItemMaster.SelectAll();
                //Debug.LogError (string.Format ("count:{0}", data_item_master.Count));
                if (data_item_master.Count == 0)
                {
                    var csvItem = new CsvItem();
                    csvItem.Load();
                    foreach (CsvItemData csv_item_data in csvItem.All)
                    {
                        DataItemMaster data = new DataItemMaster(csv_item_data);
                        if (data.open_item_id == 0)
                        {
                            data.status = 1;
                        }
                        m_dbItemMaster.Replace(data);
                    }
                }
                m_eStep = STEP.INPUT_WAIT;
            }
            else
            {
                //Debug.Log ("wait");
            }

            break;

        case STEP.INPUT_WAIT:
            if (bInit)
            {
                m_btnStart.TriggerClear();
            }
            if (true)
            {
                // とりあえず全部調べる
                List <DataWork> cleared_work_list = m_dbWork.Select(string.Format(" status = {0} ", (int)Define.Work.STATUS.CLEARD));
                foreach (DataWork work in cleared_work_list)
                {
                    List <DataMonsterMaster> list_monster = m_dbMonsterMaster.Select(string.Format(" status = 0 and open_work_id = {0} ", work.work_id));
                    foreach (DataMonsterMaster data_monster_master in list_monster)
                    {
                        Dictionary <string, string> monster_master_dict = new Dictionary <string, string> ();
                        monster_master_dict.Add("status", "1");
                        m_dbMonsterMaster.Update(data_monster_master.monster_id, monster_master_dict);
                    }
                }

                m_btnStart.TriggerClear();
                Application.LoadLevel("park_main");
            }
            break;

        case STEP.DB_BACKUP_NOEXIST:
            if (bInit)
            {
                GameObject objOjisan = PrefabManager.Instance.MakeObject("prefab/PrefOjisanCheck", m_posDisplay);
                m_ojisanCheck = objOjisan.GetComponent <CtrlOjisanCheck> ();
                m_ojisanCheck.Initialize("バックアップファイルが\n存在しません", true);
            }
            if (m_ojisanCheck.IsYes())
            {
                Destroy(m_ojisanCheck.gameObject);
                m_eStep = STEP.IDLE;
            }
            break;

        case STEP.DB_BACKUP_CHECK:
            if (bInit)
            {
                GameObject objOjisan = PrefabManager.Instance.MakeObject("prefab/PrefOjisanCheck", m_posDisplay);
                m_ojisanCheck = objOjisan.GetComponent <CtrlOjisanCheck> ();
                m_ojisanCheck.Initialize("自動保存されたデータ\nを利用して\nバックアップを行います\n\nよろしいですか");
            }
            if (m_ojisanCheck.IsYes())
            {
                //SoundManager.Instance.PlaySE (SoundName.BUTTON_PUSH);
                Destroy(m_ojisanCheck.gameObject);
                m_eStep = STEP.DB_BACKUP;
            }
            else if (m_ojisanCheck.IsNo())
            {
                //SoundManager.Instance.PlaySE (SoundName.BUTTON_PUSH);
                Destroy(m_ojisanCheck.gameObject);
                m_eStep = STEP.IDLE;
            }
            else
            {
            }
            break;

        case STEP.DB_BACKUP:
            if (bInit)
            {
                GameObject objOjisan = PrefabManager.Instance.MakeObject("prefab/PrefOjisanCheck", m_posDisplay);
                m_ojisanCheck = objOjisan.GetComponent <CtrlOjisanCheck> ();
                m_ojisanCheck.Initialize("完了しました\nゲームをスタートしてください", true);

                string sourceDB  = System.IO.Path.Combine(Application.persistentDataPath, Define.DB_NAME_DOUBTSUEN);
                string dummyDB   = System.IO.Path.Combine(Application.persistentDataPath, Define.DB_NAME_DOUBTSUEN + "." + TimeManager.StrGetTime());
                string backupDB  = System.IO.Path.Combine(Application.persistentDataPath, Define.DB_NAME_DOUBTSUEN_BK);
                string backup2DB = System.IO.Path.Combine(Application.persistentDataPath, Define.DB_NAME_DOUBTSUEN_BK2);
                if (System.IO.File.Exists(sourceDB))
                {
                    System.IO.File.Copy(sourceDB, dummyDB, true);
                }
                if (System.IO.File.Exists(backupDB))
                {
                    System.IO.File.Copy(backupDB, sourceDB, true);
                }
            }
            if (m_ojisanCheck.IsYes())
            {
                Destroy(m_ojisanCheck.gameObject);
                m_eStep = STEP.IDLE;
            }
            break;

        default:
            break;
        }

        if (m_btnTutorialReset.ButtonPushed)
        {
            PlayerPrefs.DeleteAll();

            string full_path = System.IO.Path.Combine(Application.persistentDataPath, Define.DB_NAME_DOUBTSUEN);
            System.IO.File.Delete(full_path);

            m_btnTutorialReset.TriggerClear();
        }
        if (m_btnCacheClear.ButtonPushed)
        {
            Caching.CleanCache();
            m_btnCacheClear.TriggerClear();
        }
    }
Ejemplo n.º 11
0
        static async Task Main(string[] args)
        {
            var tenantName    = "";
            var applicationId = "";
            var clientSecret  = "";

            var storageName = "";
            var storagekey  = "";

            var b2cGraphClient = new B2CGraphClient(tenantName, applicationId, clientSecret);

            var response = await b2cGraphClient.GetAllUsersAsync();

            var accounts = GraphAccounts.Parse(response);

            CloudStorageAccount storageAccount = new CloudStorageAccount(new StorageCredentials(storageName, storagekey), true);

            //Client
            CloudTableClient tableClient = storageAccount.CreateCloudTableClient();

            //Table
            CloudTable table = tableClient.GetTableReference("Ticket");

            TableQuery <TicketTableEntity> query = new TableQuery <TicketTableEntity>();

            List <TicketTableEntity> results           = new List <TicketTableEntity>();
            TableContinuationToken   continuationToken = null;

            do
            {
                TableQuerySegment <TicketTableEntity> queryResults =
                    await table.ExecuteQuerySegmentedAsync(query, continuationToken);

                continuationToken = queryResults.ContinuationToken;
                results.AddRange(queryResults.Results);
            } while (continuationToken != null);

            using (var textWriter = new StreamWriter("accounts.csv"))
            {
                var csv = new CsvWriter(textWriter);

                csv.WriteHeader <CsvItem>();
                csv.NextRecord();

                foreach (var account in accounts.value)
                {
                    var tickets = results.Where(x => x.AttendeeId == account.Id);

                    if (tickets.Count() == 0)
                    {
                        var item = new CsvItem
                        {
                            Id        = account.Id,
                            Email     = account.OtherMails.FirstOrDefault(),
                            FirstName = account.GivenName,
                            LastName  = account.Surname,
                        };
                        csv.WriteRecord(item);
                        csv.NextRecord();
                    }

                    foreach (var ticket in tickets)
                    {
                        var item = new CsvItem
                        {
                            Id          = account.Id,
                            Email       = account.OtherMails.FirstOrDefault(),
                            FirstName   = account.GivenName,
                            LastName    = account.Surname,
                            TicketType  = ticket.TicketType,
                            CouponCode  = ticket.CouponCode,
                            IsPayed     = ticket.IsPayed,
                            PaymentType = ticket.PaymentType,
                            Price       = ticket.Price,
                            WorkshopId  = ticket.WorkshopId,
                            City        = account.city,
                            Company     = account.extension_d6245cc8578e4908b91662ccd12132e2_Company,
                            JobTitle    = account.jobTitle
                        };

                        csv.WriteRecord(item);
                        csv.NextRecord();
                    }
                }
                csv.Flush();
                csv.Dispose();
            }
        }
Ejemplo n.º 12
0
            public MainWindow() : base(new[]
            {
                "resm:OxyPlot.Avalonia.Themes.Default.xaml?assembly=OxyPlot.Avalonia"
            })
            {
                Title = csv_pathfilename;
                string hdr = "";

                using (var sr = new StreamReader(csv_pathfilename))
                {
                    hdr = sr.ReadLine();
                }
                var hdr_ss = hdr.Split(',');
                var cols   = new List <int>();

                foreach (var chanFilter in chansFilter.Split(','))
                {
                    int idx = -1;
                    for (int i = 0; i < hdr_ss.Length; ++i)
                    {
                        if (hdr_ss[i].Trim().StripBegin('"').StripEnd('"') == chanFilter.Trim().StripBegin('"').StripEnd('"'))
                        {
                            idx = i;
                            break;
                        }
                    }
                    if (idx != -1)
                    {
                        cols.Add(idx);
                    }
                }

                if (cols.Count == 0)
                {
                    System.Console.WriteLine($"no matching cols");
                    Environment.Exit(1);
                }

                var grRoot = new Grid()
                {
                    Margin = new Thickness(10)
                }; this.Content = grRoot;

                pv       = new PlotView();
                pv.Model = new PlotModel();
                grRoot.Children.Add(pv);

                var series = new List <OxyPlot.Series.LineSeries>();

                foreach (var col in cols)
                {
                    var csv_data = new List <CsvItem>();
                    using (var sr = new StreamReader(csv_pathfilename))
                    {
                        sr.ReadLine();
                        while (!sr.EndOfStream)
                        {
                            var str = sr.ReadLine();
                            var ss  = str.Split(',');
                            csv_data.Add(new CsvItem {
                                t = ss[0].InvDoubleParse(), v = ss[col].InvDoubleParse() != 0
                            });
                        }
                    }
                    CsvItem periodBegin = null;
                    foreach (var x in csv_data.WithPrev())
                    {
                        if (x.item.v)
                        {
                            if (periodBegin == null)
                            {
                                periodBegin = x.item;
                            }
                            if (x.prev != null && !x.prev.v)
                            {
                                x.item.prev           = periodBegin;
                                periodBegin.periodSec = x.item.t - periodBegin.t;
                                periodBegin           = x.item;
                            }
                        }
                    }

                    var speed_items = csv_data
                                      .Where(r => r.periodSec > 0)
                                      .Select(x => new PlotData(
                                                  x.t + x.periodSec / 2,
                                                  1.0 / x.periodSec
                                                  ))
                                      .OrderBy(w => w.x);

                    var f1 = new OxyPlot.Series.LineSeries()
                    {
                        Title      = hdr_ss[col] + $" ({speed_items.Count()}pts)",
                        DataFieldX = "x",
                        DataFieldY = "y",

                        ItemsSource = speed_items
                    };
                    pv.Model.Series.Add(f1);
                }

                pv.ResetAllAxes();
                pv.InvalidatePlot();
            }