private List <OutboxDocumentModel> GetDocumentsByOutbox(List <OutboxItem> outbox)
        {
            var ids = outbox.Select(x => x.ProcessId).Distinct().ToList();

            var documents = _documentRepository.GetByIds(ids)
                            .ToDictionary(x => x.Id, x => x);

            var docs = new List <OutboxDocumentModel>();

            foreach (var outboxItem in outbox)
            {
                OutboxDocumentModel doc;

                //if document is exists
                if (documents.TryGetValue(outboxItem.ProcessId, out Document _doc))
                {
                    doc = GetDocumentModel <OutboxDocumentModel>(_doc);
                }
                else
                {
                    doc           = new OutboxDocumentModel();
                    doc.Id        = outboxItem.ProcessId;
                    doc.IsCorrect = false;
                    doc.StateName = DocumentModel.NotFoundError;
                }

                doc.ApprovalCount     = outboxItem.ApprovalCount;
                doc.FirstApprovalTime = outboxItem.FirstApprovalTime;
                doc.LastApprovalTime  = outboxItem.LastApprovalTime;
                doc.LastApproval      = outboxItem.LastApproval;
                docs.Add(doc);
            }

            return(docs);
        }
        public ActionResult DeleteConfirmed(int id)
        {
            OutboxDocumentModel outboxDocumentModel = db.OutboxDocumentModels.Find(id);

            db.OutboxDocumentModels.Remove(outboxDocumentModel);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "Id,Date,DocIndex,Description,Author,LeadResolution,LeadResolutionLogin,SaveTime,DocumentFile,NoteToDocument,Status")] OutboxDocumentModel outboxDocumentModel)
 {
     if (ModelState.IsValid)
     {
         db.Entry(outboxDocumentModel).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(outboxDocumentModel));
 }
        // GET: OutboxDocument/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            OutboxDocumentModel outboxDocumentModel = db.OutboxDocumentModels.Find(id);

            if (outboxDocumentModel == null)
            {
                return(HttpNotFound());
            }
            return(View(outboxDocumentModel));
        }
 /// <summary>
 /// получаем данные поля LeadResolution. Кто назначен для обработки документа
 /// </summary>
 /// <param name="outboxDocumentModel"></param>
 /// <returns></returns>
 public string LeadResolutionName(OutboxDocumentModel outboxDocumentModel)
 {
     return(outboxDocumentModel.LeadResolution);
 }
        public ActionResult Create([Bind(Include = "Id,Date,DocIndex,Description,Author,LeadResolution,LeadResolutionLogin,SaveTime,DocumentFile,NoteToDocument,Status")] HttpPostedFileBase upload, OutboxDocumentModel outboxDocumentModel)
        {
            if (ModelState.IsValid)
            {
                db.OutboxDocumentModels.Add(outboxDocumentModel);
                //Upload(upload);

                if (upload != null)
                {
                    // получаем имя файла
                    //string fileName = LeadResolutionName(incomingDocumentModel) + System.IO.Path.GetFileName(upload.FileName);
                    // получаем расширение файла
                    string fileName = LeadResolutionName(outboxDocumentModel) + DocIndexName(outboxDocumentModel) + System.IO.Path.GetExtension(upload.FileName);
                    // сохраняем файл в папку IncomingDocuments.Files в проекте
                    upload.SaveAs(Server.MapPath("~/OutboxDocuments.Files/" + fileName));
                    //определяем название файла для сохранения и последующей загрузки. Переопределение (определение) поля DocumentFile
                    outboxDocumentModel.DocumentFile = fileName;
                }
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(outboxDocumentModel));
        }
 /// <summary>
 /// получаем данные поля DocIndexName
 /// </summary>
 /// <param name="outboxDocumentModel"></param>
 /// <returns></returns>
 public string DocIndexName(OutboxDocumentModel outboxDocumentModel)
 {
     return(outboxDocumentModel.DocIndex);
 }