Ejemplo n.º 1
0
 public string Join(string userName, T session)
 {
     lock (sessions)
     {
         //remove session with same user name;
         var list = sessions.Where(s => s.Value.UserName == userName).ToArray();
         if (list.Count() > 0)
         {
             foreach (var pair in list)
             {
                 sessions.Remove(pair.Key);
                 System.Diagnostics.Debug.WriteLine("SessionHolder: Remove " + pair.Key);
             }
         }
         //generate new token
         string token = RandomStr.GetRndStrOfAll(TokenLength);
         while (sessions.ContainsKey(token))
         {
             token = RandomStr.GetRndStrOfAll(TokenLength);
         }
         //register session
         session.UserName  = userName;
         session.Token     = token;
         session.LastVisit = DateTime.Now;
         sessions.Add(token, session);
         System.Diagnostics.Debug.WriteLine("SessionHolder: Add " + token);
         return(token);
     }
 }
        /// <summary>
        /// 获取考勤记录。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnGetARResult_Click(object sender, EventArgs e)
        {
            V_Work_Schedule v_W_S = new V_Work_Schedule();

            v_W_S.WORK_AND_REST_DATE = YearAndMonthStr;

            /*
             * if (!v_W_S.ifExistsWS()) {
             *  return;
             * }
             */
            ARResult aRResult  = new ARResult(YearAndMonthStr);
            string   randomStr = RandomStr.GetRandomString(40, true, true, true, false, "");

            if (aRResult.updateARResult(randomStr) == 0)
            {
                this.dgv.DataSource = MESSAGES.getMSG(randomStr);
                DGVHelper.AutoSizeForDGV(dgv);
                ShowResult.show(lblResult, "异常!", false);
                timerRestoreTheLblResult.Enabled = true;
                return;
            }
            ShowResult.show(lblResult, "完成!", true);
            //显示结果
            AttendanceR aR = new AttendanceR();

            this.dgv.DataSource = aR.getARByYearAndMonth(aRResult.Year_And_Month_str);
            DGVHelper.AutoSizeForDGV(dgv);
        }
Ejemplo n.º 3
0
            public void Play_Sound()
            {
                tok = gettoken();


                text = HttpUtility.UrlEncode(text, Encoding.UTF8);
                text = HttpUtility.UrlEncode(text, Encoding.UTF8);

                string strUpdateData = string.Format(rest, text, cuid, tok, spd, pit);

                string texmd5 = EncryptWithMD5(text) + RandomStr.CreateRadNum(5, true);

                DownFile("http://tsn.baidu.com/text2audio?" + strUpdateData,
                         "D:\\", texmd5 + ".wav");


                this.fileName = "D:\\" + texmd5 + ".wav";

                FileStream fs     = new FileStream(this.fileName, FileMode.Open, FileAccess.Read);
                int        nBytes = (int)fs.Length;                   //计算流的长度

                byte[] byteArray  = new byte[nBytes];                 //初始化用于MemoryStream的Buffer
                int    nBytesRead = fs.Read(byteArray, 0, nBytes);    //将File里的内容一次性的全部读到byteArray中去

                using (MemoryStream ms = new MemoryStream(byteArray)) //初始化MemoryStream,并将Buffer指向FileStream的读取结果数组
                {
                    SoundPlayer player = new SoundPlayer();
                    ms.Position   = 0;
                    player.Stream = null;
                    player.Stream = ms;
                    player.Load();
                    player.PlaySync();
                }
            }
Ejemplo n.º 4
0
        public async Task <ActionResult <string> > PostTransaction([FromBody] float amount)
        {
            var sessionId = Guid.NewGuid();

            var url = appSettings.Server + $"sessions/{sessionId}/transaction?async=true";

            var request = new ApiRequest <EFTTransactionRequest>()
            {
                Request = new EFTTransactionRequest()
                {
                    TxnType     = "P",
                    TxnRef      = RandomStr.RandomString(TRX_RND_STR_LENGTH),
                    AmtPurchase = (int)(amount * DOLLAR_TO_CENT),
                    Merchant    = appSettings.Merchant,
                    Application = appSettings.Application,
                    PosName     = appSettings.PosName,
                    PosVersion  = appSettings.PosVersion
                },
                Notification = new Notification
                {
                    Uri = appSettings.NotificationUri
                }
            };

            if (string.IsNullOrEmpty(token))
            {
                token = GetToken().Result?.Token;
            }

            var apiClient = clients.GetAPIClient();

            apiClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
            apiClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);

            HttpContent content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");

            try
            {
                var activeTxn = new ActiveSession()
                {
                    SessionId = sessionId.ToString(), Expire = DateTime.Now.AddMinutes(TRX_EXPIRATION_MINS).Ticks
                };
                await sessionRepository.AddSession(activeTxn);

                var response = await apiClient.PostAsync(url, content);

                if (response.IsSuccessStatusCode)
                {
                    return(Accepted(value: JsonConvert.SerializeObject(sessionId)));
                }
            }
            catch
            {
            }

            return(BadRequest());
        }
        /// <summary>
        /// 导出策略
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ExportToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (dgv.Rows.Count == 1)
            {
                return;
            }
            string dir = Environment.CurrentDirectory + "\\个人考勤记录";

            DirectoryHelper.createDirecotry(dir);
            string xlsFilePath = dir + "\\" + RandomStr.getTimeStamp() + ".xls";

            ExcelHelper.saveDtToExcel((System.Data.DataTable)dgv.DataSource, xlsFilePath);
            ShowResult.show(lblResult, "记录存于" + dir, true);
            timerRestoreTheLblResult.Enabled = true;
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 生成验证码
        /// </summary>
        /// <param name="type"></param>
        /// <param name="length"></param>
        public static void Render(ValidateCodeType type, int length)
        {
            string code = string.Empty;

            switch (type)
            {
            case ValidateCodeType.Char:
            {
                code = CharCode.GetRandomChar(length);
                break;
            }

            case ValidateCodeType.Chinese:
            {
                code = ChineseCode.GetChinese(length);
                break;
            }

            case ValidateCodeType.Num:
            {
                code = RandomStr.GetRandomNum(length);
                break;
            }
            }
            System.Web.HttpContext.Current.Session[CodeName] = code;

            ImagesHelper images = new ImagesHelper();

            images.Width           = 100;
            images.Height          = 31;
            images.Text            = code;
            images.LineNoise       = ImagesHelper.LineNoiseLevel.Extreme;
            images.BackgroundNoise = ImagesHelper.BackgroundNoiseLevel.Extreme;
            images.FontWarp        = ImagesHelper.FontWarpFactor.Extreme;

            images.CreateImage();
        }
Ejemplo n.º 7
0
        public async Task <ActionResult <EFTTransactionResponse> > PostTransactionAsync([FromBody] float amount)
        {
            var sessionId = Guid.NewGuid();

            var url = appSettings.Server + $"sessions/{sessionId}/transaction";

            var request = new ApiRequest <EFTTransactionRequest>()
            {
                Request = new EFTTransactionRequest()
                {
                    TxnType     = "P",
                    TxnRef      = RandomStr.RandomString(TRX_RND_STR_LENGTH),
                    AmtPurchase = Convert.ToInt32(amount * DOLLAR_TO_CENT),
                    Merchant    = appSettings.Merchant,
                    Application = appSettings.Application
                },
                Notification = new Notification
                {
                    Uri = appSettings.NotificationUri
                }
            };

            if (string.IsNullOrEmpty(token))
            {
                token = (await GetTokenAsync())?.Token;
            }

            apiClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
            apiClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);

            HttpContent content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");

            try
            {
                var response = await apiClient.PostAsync(url, content);

                if (response != null && response.IsSuccessStatusCode)
                {
                    var apiResponse = await response.Content.ReadAsAsync <ApiResponse <EFTTransactionResponse> >();

                    if (apiResponse != null && apiResponse.Response != null)
                    {
                        return(apiResponse.Response);
                    }
                }
            }
            catch
            {
                using (var s = new TimedHostedService(sessionId, apiClient, token))
                {
                    using (var cts = new CancellationTokenSource(TRX_EXPIRATION_MINS))
                    {
                        await s.StartAsync(cts.Token);

                        EFTTransactionResponse txn = null;

                        while (txn == null)
                        {
                            txn = s.GetTransaction();
                            await Task.Delay(WAIT_PERIOD_SEC);

                            if (cts.IsCancellationRequested)
                            {
                                await s.StopAsync(cts.Token);
                            }
                        }

                        await s.StopAsync(cts.Token);

                        if (txn == null || !txn.Success)
                        {
                            return(BadRequest());
                        }

                        return(txn);
                    }
                }
            }

            return(BadRequest());
        }
Ejemplo n.º 8
0
        public async Task <ActionResult <EFTTransactionResponse> > PostTransactionAsync([FromBody] TransactionRequest transaction)
        {
            if (transaction == null || transaction.Amount <= 0 || string.IsNullOrEmpty(transaction.TxnType))
            {
                return(BadRequest());
            }

            var sessionId = Guid.NewGuid();

            var url = appSettings.Server + $"sessions/{sessionId}/transaction";

            var request = new ApiRequest <EFTTransactionRequest>();

            var application = "00";

            if (!string.IsNullOrEmpty(transaction.Merchant) && transaction.Merchant != "00")
            {
                application = "02";
            }
            request.Request = new EFTTransactionRequest()
            {
                TxnType          = string.IsNullOrEmpty(transaction.TxnType) ? "P" : transaction.TxnType,
                ReceiptAutoPrint = "0",
                TxnRef           = RandomStr.RandomString(TRX_RND_STR_LENGTH),
                AmtPurchase      = Convert.ToInt32(transaction.Amount * DOLLAR_TO_CENT),
                Merchant         = string.IsNullOrEmpty(transaction.Merchant) ? appSettings.Merchant : transaction.Merchant,
                Application      = application
            };

            request.Notification = new Notification
            {
                Uri = appSettings.NotificationUri
            };

            // if refund
            if (string.Equals(transaction.TxnType, "R"))
            {
                int.TryParse(transaction.Merchant, out int merchant);

                if (merchant > 0) // Means the refund is going through TPP extension
                {
                    if (!string.IsNullOrEmpty(transaction.RefundReference))
                    {
                        dynamic purchaseData = new Newtonsoft.Json.Linq.JObject();
                        purchaseData.REF = transaction.RefundReference;
                        request.Request.PurchaseAnalysisData = purchaseData;
                    }
                    else
                    {
                        return(BadRequest());
                    }
                }
            }

            if (string.IsNullOrEmpty(token))
            {
                token = (await GetTokenAsync())?.Token;
            }

            if (string.IsNullOrEmpty(token))
            {
                return(Unauthorized());
            }

            apiClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
            apiClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);

            HttpContent content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");

            try
            {
                var response = await apiClient.PostAsync(url, content);

                if (response.IsSuccessStatusCode)
                {
                    var apiResponse = await response.Content.ReadAsAsync <ApiResponse <EFTTransactionResponse> >();

                    if (apiResponse?.Response != null)
                    {
                        return(apiResponse.Response);
                    }
                }
            }
            catch
            {
                //Start timer for background service
                using (var s = new TimedHostedService(sessionId, apiClient, token))
                {
                    using (var cts = new CancellationTokenSource(TimeSpan.FromMinutes(3)))
                    {
                        await s.StartAsync(cts.Token);

                        EFTTransactionResponse txn = null;

                        while (txn == null)
                        {
                            txn = s.GetTransaction();
                            await Task.Delay(TimeSpan.FromSeconds(WAIT_PERIOD_SEC));

                            if (cts.IsCancellationRequested)
                            {
                                await s.StopAsync(cts.Token);
                            }
                        }

                        await s.StopAsync(cts.Token);

                        if (txn == null || !txn.Success)
                        {
                            return(BadRequest());
                        }

                        return(txn);
                    }
                }
            }

            return(BadRequest());
        }
        private void btnImportRestDay_Click(object sender, EventArgs e)
        {
            randomStr          = RandomStr.GetRandomString(33, true, true, true, false, "");
            xlsFilePath        = FileNameDialog.getSelectedFilePathWithDefaultDir("请选择考勤记录:", "*.xls|*.xls", defaultDir);
            tbRestDayPath.Text = xlsFilePath;
            //***********************************************************
            List <TheDaysOfOvertime> restDayList = new List <TheDaysOfOvertime>();

            ApplicationClass app = new ApplicationClass();

            app.Visible = false;
            Workbook wBook = null;
            //用于确定本月最后一天.
            //行最大值.
            int rowsMaxCount = 0;
            int colsMaxCount = 0;

            try
            {
                wBook = app.Workbooks.Open(xlsFilePath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                if (wBook != null)
                {
                    wBook.Close(true, xlsFilePath, Type.Missing);
                }
                //退出excel
                app.Quit();
                //释放资源
                if (wBook != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(wBook);
                }
                System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
                //调用GC的垃圾回收方法
                GC.Collect();
                GC.WaitForPendingFinalizers();
                return;
            }
            Worksheet ws = (Worksheet)(wBook.Worksheets.Item[1]);

            //行;列最大值 赋值.
            rowsMaxCount = ws.UsedRange.Rows.Count;
            colsMaxCount = ws.UsedRange.Columns.Count;
            //判断首行是否为 考勤记录表;以此判断此表是否为考勤记录表.
            //检查日期列的值是否符合规范。
            string temp = string.Empty;

            string[] tempArray = { };
            for (int rowIndex = 2; rowIndex <= rowsMaxCount; rowIndex++)
            {
                temp = ((Range)ws.Cells[rowIndex, 2]).Text.ToString().Trim();
                DateTime dt;
                if (!DateTime.TryParse(temp, out dt))
                {
                    ShowResult.show(lblResult, temp + ": 非时间格式!", false);
                    timerRestoreTheLblResult.Enabled = true;
                    return;
                }
                //先判断是否含有"/"或者"-"
                if (!temp.Contains("/") && !temp.Contains("-"))
                {
                    ShowResult.show(lblResult, "此内容非时间格式: yyyy/MM/dd 或 yyyy-MM-dd!", false);
                    timerRestoreTheLblResult.Enabled = true;
                    return;
                }

                tempArray = temp.Split(new char[] { '/', '-' });
                string year = tempArray[0];
                if (!CheckString.checkYear(year))
                {
                    ShowResult.show(lblResult, "前4位非年份!", false);
                    timerRestoreTheLblResult.Enabled = true;
                    return;
                }
                string month = tempArray[1];
                if (!CheckString.checkMonth(month))
                {
                    ShowResult.show(lblResult, "第6,7位非月份!", false);
                    timerRestoreTheLblResult.Enabled = true;
                    return;
                }
                string day = tempArray[2];
                if (!CheckString.checkDay(day))
                {
                    ShowResult.show(lblResult, "第9,10位非天数!", false);
                    timerRestoreTheLblResult.Enabled = true;
                    return;
                }
            }
            string dateStr = string.Empty;
            string name    = string.Empty;

            //精诚所至,金石为开。
            for (int rowIndex = 2; rowIndex <= rowsMaxCount; rowIndex++)
            {
                dateStr = ((Range)ws.Cells[rowIndex, 2]).Text.ToString().Trim();
                name    = ((Range)ws.Cells[rowIndex, 1]).Text.ToString().Trim();
                TheDaysOfOvertime restDay = new TheDaysOfOvertime(name, dateStr);
                restDay.addRestDay();
            }
            //释放对象
            int hwndOfApp = app.Hwnd;

            Tools.CmdHelper.killProcessByHwnd(hwndOfApp);
            //****************************************************************
            tempArray           = dateStr.Split(new char[] { '/', '-' });
            this.dgv.DataSource = TheDaysOfOvertime.getRestDays(tempArray[0] + "-" + tempArray[1]);
            DGVHelper.AutoSizeForDGV(dgv);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Make transaction
        /// </summary>
        /// <param name="amount">Amount of transaction</param>
        public async Task OnPostDoTransactionAsync(string amount)
        {
            var sessionId    = Guid.NewGuid();
            var actualAmount = float.Parse(amount);

            var url = appSettings.Server + $"sessions/{sessionId}/transaction?async=true";

            // Create a sample json 'basket' object which is sent as part of transaction request
            JObject basket = JObject.FromObject(
                new
            {
                id    = (Guid.NewGuid()).ToString(),
                amt   = 18700,
                tax   = 1760,
                dis   = 650,
                sur   = 374,
                items = new dynamic[]
                {
                    new { id = "t39kq002", sku = "k24086723", qty = 2, amt = 2145, tax = 200, dis = 50, name = "XData USB Drive" },
                    new { id = "t39kq003", sku = "s23475697", qty = 1, amt = 8910, tax = 810, name = "MSoft OSuite", srl = "ms7843k346j23" },
                    new { id = "t39kq004", sku = "m47060855", qty = 5, amt = 1100, tax = 110, dis = 110, name = "A4 Notepad" }
                }
            }
                );

            var request = new ApiRequest <EFTTransactionRequest>()
            {
                Request = new EFTTransactionRequest()
                {
                    TxnType     = "P",
                    TxnRef      = RandomStr.RandomString(TRX_RND_STR_LENGTH),
                    AmtPurchase = Convert.ToInt32(actualAmount * DOLLAR_TO_CENT),
                    Merchant    = appSettings.Merchant,
                    Application = appSettings.Application,
                    Basket      = basket
                },
                Notification = new Notification
                {
                    Uri = appSettings.NotificationUri
                }
            };

            if (string.IsNullOrEmpty(token))
            {
                token = (await GetTokenAsync())?.Token;
            }

            var apiClient = clients.GetAPIClient();

            apiClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
            apiClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);

            HttpContent content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");

            try
            {
                var activeTxn = new ActiveSession()
                {
                    SessionId = sessionId.ToString(), Expire = DateTime.Now.AddMinutes(TRX_EXPIRATION_MINS).Ticks
                };
                await sessionRepository.AddSessionAsync(activeTxn);

                var response = await apiClient.PostAsync(url, content);
            }
            catch
            {
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 下载文件到指定文件夹
        /// </summary>
        /// <param name="strSourceMainUrl">源资源的主地址</param>
        /// <param name="strSourceSiteUrl">相对于主地址的站点目录地址,如果主地址已经表达完整则为空</param>
        /// <param name="strLocalFolder">本地下载主目录</param>
        /// <param name="intFileNameType">文件命名方式,1保持原文件名,2原文件名之后附加文件名,3随机重命名</param>
        /// <param name="strPlusName">文件命名方式为2时,本参数附在源文件名之后</param>
        /// <param name="blnKeepDirTree">是否保持同源资源目录结构</param>
        /// <param name="strReturnFileName">返回文件命名</param>
        /// <returns>下载成功返回true,否则返回false</returns>
        public static Boolean DownFile(string strSourceMainUrl, string strSourceSiteUrl, string strLocalFolder, int intFileNameType, string strPlusName, Boolean blnKeepDirTree, out string strReturnFileName)
        {
            try
            {
                string         strSource = strSourceMainUrl + strSourceSiteUrl;
                Uri            u         = new Uri(strSource);
                HttpWebRequest mRequest  = (HttpWebRequest)WebRequest.Create(u);
                mRequest.Timeout     = 300000;
                mRequest.Method      = "GET";
                mRequest.ContentType = "application/x-www-form-urlencoded";
                mRequest.KeepAlive   = false;
                HttpWebResponse wr = (HttpWebResponse)mRequest.GetResponse();

                Stream sIn = wr.GetResponseStream();

                //得到源文件名称
                string   sFileName = "";
                string[] arrTemp   = strSourceSiteUrl.Split(new string[1] {
                    "/"
                }, StringSplitOptions.RemoveEmptyEntries);
                sFileName = arrTemp[arrTemp.Length - 1];

                if (blnKeepDirTree)
                {
                    //得到源文件相对主目录的文件夹
                    string sSubDir = "";
                    if (sFileName != strSourceSiteUrl)
                    {
                        sSubDir = strSourceSiteUrl.Substring(0, strSourceSiteUrl.Length - sFileName.Length - 1);
                    }
                    strLocalFolder = strLocalFolder + "\\" + sSubDir;
                }

                if (!Directory.Exists(strLocalFolder))
                {
                    Directory.CreateDirectory(strLocalFolder);
                }

                //附加重命名
                if (intFileNameType == 2)
                {
                    arrTemp = sFileName.Split(new string[1] {
                        "."
                    }, StringSplitOptions.RemoveEmptyEntries);
                    sFileName = string.Join(strPlusName + ".", arrTemp);
                }

                //随机重命名
                if (intFileNameType == 3)
                {
                    //文件后缀
                    arrTemp = sFileName.Split(new string[1] {
                        "."
                    }, StringSplitOptions.RemoveEmptyEntries);
                    string sFileType = "." + arrTemp[arrTemp.Length - 1];
                    //生成文件名
                    sFileName = RandomStr.GetRndStrOnlyFor(10, true, true) + sFileType;
                    //Console.WriteLine(strLocalFolder + "\\" + sFileName);
                    while (File.Exists(strLocalFolder + "\\" + sFileName))
                    {
                        sFileName = RandomStr.GetRndStrOnlyFor(10, true, true) + sFileType;
                    }
                }

                strLocalFolder = strLocalFolder + "\\" + sFileName;

                FileStream fs     = new FileStream(strLocalFolder, FileMode.Create, FileAccess.Write);
                long       length = wr.ContentLength;
                int        i      = 0;
                long       j      = 0;
                byte[]     buffer = new byte[1024];
                while ((i = sIn.Read(buffer, 0, buffer.Length)) > 0)
                {
                    j += i;
                    fs.Write(buffer, 0, i);
                }

                sIn.Close();
                wr.Close();
                fs.Close();
                strReturnFileName = sFileName;

                return(true);
            }
            catch (Exception exDF)
            {
                //Console.WriteLine(exDF.Message);
                MyErrMsg          = exDF.Message;
                strReturnFileName = "";
                return(false);
                //throw exDF;
            }
        }