public IHttpActionResult LoadDocument(Guid messageId, Guid entityId, int?userId)
        {
            var _diadocApi           = new Diadoc.Api.DiadocApi(DiadocConstants.DiadocClientId, DiadocConstants.DiadocApiUrl, new Diadoc.Api.Cryptography.WinApiCrypt());
            var diadocAuthTokenLogin = _diadocApi.Authenticate(DiadocConstants.DiadocLogin, DiadocConstants.DiadocPassword);

            try
            {
                using (var db = new cis(User.Identity.Name, userId))
                {
                    var    uacBoxId   = db.GetDiadocBoxId(Constant.OwnerId);
                    var    document   = db.Documents.FirstOrDefault(m => m.MessageId == messageId && m.EntityId == entityId && m.DocCardId == null);
                    byte[] fileStream = GetDiadocFileStream(_diadocApi, diadocAuthTokenLogin, uacBoxId, document);
                    string fileName   = db.GetDiadocFileName(document) + ".zip";
                    db.DocIntegrationInsert(document.Id, fileName, fileStream, db.CurrentUser.Id);
                    while (db.Documents.Any(m => m.MessageId == messageId && m.EntityId == entityId && m.DocCardId == null))
                    {
                        continue;
                    }
                    var list = db.Documents.Where(m => m.MessageId == messageId && m.EntityId == entityId).AsNoTracking().AsQueryable();
                    return(Json <object>(GetDocCardResponceModel(db, list, string.Empty, string.Empty, 0, 15), JsonSettings.RuDateTimeFormat));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest(CISLibApp.Basic.Tools.BasicTools.GetErrorMessage(ex)));
            }
        }
        public IHttpActionResult Authenticate([FromBody] object body)
        {
            try
            {
                var _diadocApi  = new Diadoc.Api.DiadocApi(DiadocConstants.DiadocClientId, DiadocConstants.DiadocApiUrl, new Diadoc.Api.Cryptography.WinApiCrypt());
                var requestX509 = JsonConvert.DeserializeObject <EasyCert>(JsonConvert.SerializeObject(body), JsonSettings.RuDateTimeFormat);
                var x509        = new System.Security.Cryptography.X509Certificates.X509Certificate2();
                x509.Import(Convert.FromBase64String(requestX509.Signature));

                //x509.PrivateKey = JsonConvert.DeserializeObject<System.Security.Cryptography.RSACryptoServiceProvider>(JsonConvert.SerializeObject(requestX509.PrivateKey), JsonSettings.RuDateTimeFormat);


                //var x509 = DiaDocController.GetCertificate();
                //var authTokenCert1 = _diadocApi.Authenticate(x509.Thumbprint);
                //var b = x509.RawData;
                //var authTokenCert2 = _diadocApi.Authenticate(x509.RawData);

                var authTokenCert = _diadocApi.Authenticate(x509.RawData);
                return(Json <string>("OK!"));
            }
            catch (Exception ex)
            {
                return(BadRequest(CISLibApp.Basic.Tools.BasicTools.GetErrorMessage(ex)));
            }
        }
        private static byte[] GetDiadocFileStream(Diadoc.Api.DiadocApi _diadocApi, string diadocAuthTokenLogin, string uacBoxId, Document document)
        {
            var file = _diadocApi.GenerateDocumentZip(diadocAuthTokenLogin, uacBoxId, document.MessageId.ToString(), document.EntityId.ToString(), true);

            while (file.RetryAfter > 0)
            {
                System.Threading.Thread.Sleep(file.RetryAfter * 1000);
                //    file = _diadocApi.GeneratePrintForm(diadocAuthTokenLogin, uacBoxId, item.MessageId.ToString(), item.EntityId.ToString());
                file = _diadocApi.GenerateDocumentZip(diadocAuthTokenLogin, uacBoxId, document.MessageId.ToString(), document.EntityId.ToString(), true);
            }
            var fileStream = _diadocApi.GetFileFromShelf(diadocAuthTokenLogin, file.ZipFileNameOnShelf);

            return(fileStream);
        }
        public IHttpActionResult LoadDocumentsList(Guid messageId, int?userId)
        {
            var _diadocApi           = new Diadoc.Api.DiadocApi(DiadocConstants.DiadocClientId, DiadocConstants.DiadocApiUrl, new Diadoc.Api.Cryptography.WinApiCrypt());
            var diadocAuthTokenLogin = _diadocApi.Authenticate(DiadocConstants.DiadocLogin, DiadocConstants.DiadocPassword);

            try
            {
                using (var db = new cis(User.Identity.Name, userId))
                {
                    var uacBoxId      = db.GetDiadocBoxId(Constant.OwnerId);
                    var parentDocCard = Tools.CopyEntity(db.DocCards.FirstOrDefault(m => db.Documents.Any(m2 => m2.MessageId == messageId && m2.DocCardId == m.Id) && m.ParentDocCardId == null));

                    foreach (var item in db.Documents.Where(m => m.MessageId == messageId && m.DocCardId == null).ToList())
                    {
                        byte[] fileStream = GetDiadocFileStream(_diadocApi, diadocAuthTokenLogin, uacBoxId, item);
                        string fileName   = db.GetDiadocFileName(item) + ".zip";
                        db.DocIntegrationInsertNew(item, fileName, fileStream, parentDocCard.Id);
                    }
                    while (db.Documents.Any(m => m.MessageId == messageId && m.DocCardId == null))
                    {
                        continue;
                    }
                    //var doclist = db.Documents.AsNoTracking().Where(m => m.MessageId == messageId && m.DocCardId != null && m.DocCardId != parentDocCard.Id);
                    //foreach (var item in doclist)
                    //{
                    //    var docCard = db.DocCards.Find(item.DocCardId);
                    //        docCard.ParentDocCardId = parentDocCard.Id;
                    //        docCard.IsPacket = true;
                    //        if (!db.DocCardReferences.Any(dcr => dcr.ParentId == docCard.ParentDocCardId.Value && dcr.ChildId == docCard.Id))
                    //        {
                    //            var dcr = new DocCardReference
                    //            {
                    //                ParentId = docCard.ParentDocCardId.Value,
                    //                ChildId = docCard.Id
                    //            };
                    //            db.DocCardReferences.Add(dcr);
                    //        }
                    //}
                    //db.SaveChanges();

                    var list = db.Documents.Where(m => m.MessageId == messageId).AsNoTracking().AsQueryable();
                    return(Json <object>(GetDocCardResponceModel(db, list, string.Empty, string.Empty, 0, 15), JsonSettings.RuDateTimeFormat));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest(CISLibApp.Basic.Tools.BasicTools.GetErrorMessage(ex)));
            }
        }