コード例 #1
0
        async Task <bool> EncodeDrivingLicense(ITask obj)
        {
            var o           = (DrivingLicense)obj;
            var holderPhoto = o.Holder.PhotoData;

            if (!String.IsNullOrEmpty(holderPhoto))
            {
                var photoData = Convert.FromBase64String(holderPhoto);
                using (var image = new MagickImage(photoData))
                {
                    image.Quality = 80;
                    image.Resize(275, 0);
                    o.Holder.PhotoData = image.ToBase64(MagickFormat.Jpeg);
                }
            }

            var holderSign = o.Holder.SignatureData;

            if (!String.IsNullOrEmpty(holderSign))
            {
                var signData = Convert.FromBase64String(holderSign);
                using (var image = new MagickImage(signData))
                {
                    image.Quality = 90;
                    image.Resize(165, 0);
                    image.BackgroundColor = MagickColors.White;
                    image.ColorAlpha(MagickColors.White);
                    o.Holder.SignatureData = image.ToBase64(MagickFormat.Jpeg);
                }
            }

            var jss = new JsonSerializerSettings
            {
                ContractResolver     = new DlPostContractResolver("card"),
                DateTimeZoneHandling = DateTimeZoneHandling.Local,
                DateFormatString     = "yyyyMMdd"
            };
            var json = JsonConvert.SerializeObject(o, Formatting.Indented, jss);

            int    rsCode;
            string cardSn;

            try
            {
                rsCode = await CardApi.WriteDriverInfo(json);

                cardSn = await CardApi.ReadUUidAsync();
            }
            catch
            {
                CurrentProdLine.SetPrinterPosition("RejectPosition");
                rtbLog.AppendText(String.Format(Texts.CardEncodingError, DateTime.Now.ToString("G")));
                rtbLog.AppendText(Environment.NewLine);
                return(false);
            }

            if (rsCode != 0)
            {
                CurrentProdLine.SetPrinterPosition("RejectPosition");
                rtbLog.AppendText(String.Format(Texts.CardEncodingError, DateTime.Now.ToString("G")));
                rtbLog.AppendText(Environment.NewLine);
                return(false);
            }

            o.CardSn               = cardSn;
            o.Holder.PhotoData     = holderPhoto;
            o.Holder.SignatureData = holderSign;
            return(true);
        }