public IHttpActionResult GetDocumentUrl2(int docId) { if (docId > 0) { using (var db = new cis(User.Identity.Name)) { try { string getObjectEditUrl = Constant.GetObject(Constant.ExternalLinksURL.DiadocDocument)?.EditUrl; if (getObjectEditUrl == null) { throw new Exception("Не указана строка удалённой карточки в перечислениях."); } string getDiadocBox = db.GetDiadocBoxId(Constant.OwnerId, (int)Constant.ExtSystem.Diadoc_BoxId); var diadocDocument = db.Documents.FirstOrDefault(m => m.DocCardId == docId); if (diadocDocument == null) { throw new Exception("Не связана не одна карточка диадок."); } return(Json <object>(string.Format(getObjectEditUrl, getDiadocBox, diadocDocument.MessageId.ToString(), diadocDocument.EntityId.ToString()))); } catch (Exception ex) { return(BadRequest(CISLibApp.Basic.Tools.BasicTools.GetErrorMessage(ex))); } } } return(null); }
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 GetDocumentList([FromBody] object body, int?userId, string dateb, string datee, int currentPage, int pageSize) { using (var db = new cis(User.Identity.Name, userId)) { try { var jsonSerializeObject = JsonConvert.SerializeObject(body); var findModel = JsonConvert.DeserializeObject <FindModelDiaDocument>(jsonSerializeObject, JsonSettings.RuDateTimeFormat); var list = db.Documents.AsNoTracking().AsQueryable(); if (findModel.Num != null) { list = list.Where(m => m.DocumentNumber.Contains(findModel.Num)).AsQueryable(); } if (findModel.Date != null) { var dt = findModel.Date.Value.ToString("dd.MM.yyyy"); list = list.Where(m => m.DocumentDate.Contains(dt)).AsQueryable(); } if (findModel.ContractorId != null) { list = list.Where(m => m.ContractorId == findModel.ContractorId).AsQueryable(); } if (findModel.CounteragentBoxId != null) { list = list.Where(m => m.CounteragentBoxId == findModel.CounteragentBoxId).AsQueryable(); } if (findModel.DocTypeId != null) { list = list.Where(m => m.DocTypeId == findModel.DocTypeId).AsQueryable(); } if (findModel.DocCardId != null) { list = list.Where(m => m.DocCardId == findModel.DocCardId).AsQueryable(); } if (findModel.MessageId != null) { list = list.Where(m => m.MessageId == findModel.MessageId).AsQueryable(); } if (findModel.Text != null) { list = list.Where( m => m.EntityId.ToString().Contains(findModel.Text) || m.DocumentNumber.Contains(findModel.Text) || m.FileName.Contains(findModel.Text) || m.DocType.Name.Contains(findModel.Text) || m.DocCardId.ToString().Contains(findModel.Text) ).AsQueryable(); } return(Json <object>(GetDocCardResponceModel(db, list, dateb, datee, currentPage, pageSize), JsonSettings.RuDateTimeFormat)); } catch (Exception ex) { return(BadRequest(CISLibApp.Basic.Tools.BasicTools.GetErrorMessage(ex))); } } }
public IHttpActionResult SetDocumentList(int?userId, [FromBody] List <EasyDiaDocument> bodylist) { using (var db = new cis(User.Identity.Name, userId)) { try { //var objStr = JsonConvert.SerializeObject(bodylist); //var list = JsonConvert.DeserializeObject<List<EasyDiaDocument>>(objStr, JsonSettings.RuDateTimeFormat); var list = new List <Document>(); foreach (var item in bodylist) { list.Add(SetDocumentChangeFields(db, item)); } db.SaveChanges(); //foreach (var item in list.Where(doc => doc.DocCardId > 0 && doc.Active)) //{ // LoadZip(db, item); //} return(Json <object>(new { result = "Документы успешно связаны и будут загружены в ближайшее время" })); } catch (Exception ex) { return(BadRequest(CISLibApp.Basic.Tools.BasicTools.GetErrorMessage(ex))); } } }
public async Task <HttpResponseMessage> UploadSignedFile() { try { if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } var root = HttpContext.Current.Server.MapPath("~/App_Data"); var provider = new MultipartFormDataStreamProvider(root); await Request.Content.ReadAsMultipartAsync(provider); var _moId = provider.FormData["metaObjectId"]; if (_moId == null) { throw new Exception("Не обнаружена связь с таблицей"); } var moId = 0; if (!int.TryParse(_moId, out moId)) { return(null); } var _oId = provider.FormData["objectId"]; if (_oId == null) { throw new Exception("Не обнаружен документ ПКМ"); } var oId = 0; if (!int.TryParse(_oId, out oId)) { return(null); } foreach (var file in provider.FileData) { var filename = (file.Headers.ContentDisposition.FileName).Replace("\"", ""); var fileBin = File.ReadAllBytes(file.LocalFileName); var ct = file.Headers.ContentType.ToString(); using (var db = new cis()) { db.CurrentUser = MetaUserTools.GetCurrentMetaUser(User.Identity.Name); AttachmentTools.UploadAttachment(db, fileBin, filename, filename, ct, Constant.GetConstantValue(Constant.DocumentTypes.AttachDiadoc), false, moId, oId, false); } } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex)); } return(Request.CreateResponse(HttpStatusCode.OK)); }
/* * private static void LoadZip(cis db, Document item) * { * if (!item.DocCardId.HasValue) * { * throw new Exception("Попытка загрузить файл в не связанный документ"); * } * var uacBoxId = db.GetDiadocBoxId(Constant.OwnerId); * var _diadocApi = new DiadocApi(DiadocConstants.DiadocClientId, DiadocConstants.DiadocApiUrl, new Diadoc.Api.Cryptography.WinApiCrypt()); * var diadocAuthTokenLogin = _diadocApi.Authenticate(DiadocConstants.DiadocLogin, DiadocConstants.DiadocPassword); * var file = _diadocApi.GenerateDocumentZip(diadocAuthTokenLogin, uacBoxId, item.MessageId.ToString(), item.EntityId.ToString(), true); * while (file.RetryAfter > 0) * { * System.Threading.Thread.Sleep(file.RetryAfter * 1000); * file = _diadocApi.GenerateDocumentZip(diadocAuthTokenLogin, uacBoxId, item.MessageId.ToString(), item.EntityId.ToString(), true); * } * var fileStream = _diadocApi.GetFileFromShelf(diadocAuthTokenLogin, file.ZipFileNameOnShelf); * string fileName = db.GetDiadocFileName(item) + ".zip"; * * AttachmentTools.AddAttachment(fileStream, fileName, item.CreationTimestamp, item.DocCardId.Value); * } */ private static int GetDocCardTypeId(cis db, Document doc) { if (doc.DocCardId > 0) { var docCard = db.DocCards.Find(doc.DocCardId); return(docCard.DocumentTypeId); } else { var docDirectTypeTemp = doc.DocumentDirection + "." + doc.DocumentType.ToString(); var docType = db.GetDiadocDocType(doc.DocumentDirection, doc.DocumentType); return(docType != null ? docType.ObjectId : (int)CISLibApp.Common.Constant.DocumentTypes.DocCardDiadoc); } }
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))); } }
private static Document SetDocumentChangeFields(cis db, EasyDiaDocument item) { if (item.DocCardId > 0 && item.Active) { foreach (var document in db.Documents.Where(m => m.DocCardId == item.DocCardId)) { document.Active = false; } } var doc = db.Documents.Find(item.Id); doc.DocCardId = item.DocCardId; doc.DocTypeId = GetDocCardTypeId(db, doc); doc.Active = item.Active; return(doc); }
public IHttpActionResult SetDocument(int?userId, [FromBody] EasyDiaDocument body) { using (var db = new cis(User.Identity.Name, userId)) { try { var doc = SetDocumentChangeFields(db, body); db.SaveChanges(); return(Json <object>(new { result = "Документы успешно связаны и будут загружены в ближайшее время" })); } catch (Exception ex) { return(BadRequest(CISLibApp.Basic.Tools.BasicTools.GetErrorMessage(ex))); } } }
public IHttpActionResult GetDocumentUrl(string messageId, string entityId) { using (var db = new cis(User.Identity.Name)) { try { string getObjectEditUrl = Constant.GetObject(Constant.ExternalLinksURL.DiadocDocument)?.EditUrl; if (getObjectEditUrl == null) { throw new Exception("Не указана строка удалённой карточки в перечислениях"); } string getDiadocBox = db.GetDiadocBoxId(Constant.OwnerId, (int)Constant.ExtSystem.Diadoc_BoxId); return(Json <object>(string.Format(getObjectEditUrl, getDiadocBox, messageId, entityId))); } catch (Exception ex) { return(BadRequest(CISLibApp.Basic.Tools.BasicTools.GetErrorMessage(ex))); } } }
private static DocCardResponceModel GetDocCardResponceModel(cis db, IQueryable <Document> list, string dateb, string datee, int currentPage, int pageSize) { var metaTable = db.MetaObjects.FirstOrDefault(mo => mo.Id == (int)Constant.Table.DocCard); DateTime?_dateb = null; DateTime?_datee = null; var ruCultureInfo = CultureInfo.GetCultureInfo("ru-Ru"); if (!string.IsNullOrWhiteSpace(dateb)) { _dateb = Convert.ToDateTime(dateb, ruCultureInfo); } if (!string.IsNullOrWhiteSpace(datee)) { _datee = Convert.ToDateTime(datee, ruCultureInfo); _datee = _datee.Value.AddDays(1); } var totalRowCount = list.AsNoTracking().Count(); var ret = new DocCardResponceModel(); ret.ownerBoxId = db.GetDiadocBoxId(Constant.OwnerId); ret.TotalRowCount = totalRowCount; ret.CurrentPage = 0; ret.TotalRowCount = list.AsNoTracking().Count(); if (currentPage > totalRowCount / pageSize + 1) { currentPage = 0; } else { ret.CurrentPage = currentPage; } int s = pageSize * currentPage; int t = pageSize; list = list.OrderByDescending(m => m.CreationTimestamp).Skip(s).Take(t); ret.List = list .Where(m => (!_dateb.HasValue || m.CreationTimestamp >= _dateb.Value) && (!_datee.HasValue || m.CreationTimestamp <= _datee.Value)) .Select(m => new { id = m.Id, editUrl = m.DocCardId.HasValue ? metaTable.EditUrl.Replace("{0}", m.DocCardId.Value.ToString()) : metaTable.DefaultUrl, isDocCardParent = db.DocCards.Any(dc => dc.Id == m.DocCardId && dc.ParentDocCardId == null), parentId = m.ParentId, subDocCount = db.Documents.Count(mes => mes.MessageId == m.MessageId), docType = m.DocType.Name, status = m.Status, vat = m.Vat, total = m.Total, currency = m.Currency, documentStatus = m.DocumentStatus, revocationStatus = m.RevocationStatus, resolutionStatusType = m.ResolutionStatusType, documentNumber = m.DocumentNumber, documentDate = m.DocumentDate, documentType = m.DocumentType, fileName = m.FileName.Contains("XML") ? (db.ExtIntegrations.FirstOrDefault( ExtInt => ExtInt.MetaObjectId == (int)CISLibApp.Common.Constant.Table.DocumentType && ExtInt.ExtSystemId == (int)CISLibApp.Common.Constant.ExtSystem.Diadoc_DocumentTypeDotDocumentClass && ExtInt.ExternalId == (m.DocumentDirection + "." + m.DocumentType.ToString())).Description) + " №" + m.DocumentNumber + " от " + m.DocumentDate : m.FileName, counteragentBoxId = m.CounteragentBoxId, counteragentBox = db.ExtIntegrations.FirstOrDefault( ExtInt => ExtInt.MetaObjectId == (int)CISLibApp.Common.Constant.Table.Contractor && ExtInt.ExtSystemId == (int)CISLibApp.Common.Constant.ExtSystem.Diadoc_Box && ExtInt.ExternalId == m.CounteragentBoxId).Description, messageId = m.MessageId, entityId = m.EntityId, docCardId = m.DocCardId, docCardDocNumber = m.DocCardId.HasValue ? db.DocCards.FirstOrDefault(dc => dc.Id == m.DocCardId).DocNumber : string.Empty, contractorId = m.ContractorId, contractor = m.Contractor.FullName, docTypeId = m.DocTypeId, active = m.Active, creationTimestamp = m.CreationTimestamp, createdBy = m.CreatedBy, createdDate = m.CreatedDate, lastUpdatedBy = m.LastUpdatedBy, lastUpdatedDate = m.LastUpdatedDate }) .ToList <object>(); return(ret); }