public bool CreateRemark(string id, Employee employee, int dicStageId)
        {
            var model = GetExpertiseStageById(new Guid(id));

            if (model == null)
            {
                return(true);
            }

            var otdIds      = (model.OtdIds ?? "").Split(',').ToList();
            var otds        = AppContext.EXP_ExpertiseStageRemark.Where(e => e.OtdId > 0 && e.EXP_ExpertiseStage.StageId == dicStageId && e.EXP_ExpertiseStage.Id == model.Id).Select(e => e.OtdId);
            var dicRepo     = new ReadOnlyDictionaryRepository();
            var dicOtdQuery = model.EXP_DrugDeclaration.EXP_DIC_Type.Code == EXP_DIC_Type.ReRegistration
                ? dicRepo.GetExpDicPrimaryOTDs(null, new[] { EXP_DIC_PrimaryOTD.Module4, EXP_DIC_PrimaryOTD.Module5 })
                : dicRepo.GetExpDicPrimaryOTDs();
            var dicotds           = dicOtdQuery.Where(e => !otdIds.Contains(e.Id.ToString()) && !otds.Contains(e.Id) && e.EXP_DIC_PrimaryOTD1.Count == 0);
            var expDicPrimaryOtds = dicotds as EXP_DIC_PrimaryOTD[] ?? dicotds.ToArray();

            var deleteList = AppContext.EXP_ExpertiseStageRemark.Where(e => e.OtdId > 0 && e.EXP_ExpertiseStage.StageId == dicStageId && e.EXP_ExpertiseStage.Id == model.Id && otdIds.Contains(e.OtdId.ToString()));

            foreach (var expDrugPrimaryRemark in deleteList)
            {
                AppContext.EXP_ExpertiseStageRemark.Remove(expDrugPrimaryRemark);
            }
            AppContext.SaveChanges();
            if (!expDicPrimaryOtds.Any())
            {
                return(true);
            }
            var otdRemarks = (model.OtdRemarks ?? "").Split(new[] { "+++" }, StringSplitOptions.RemoveEmptyEntries)
                             .Select(e =>
            {
                var items = e.Split(new[] { "-->" }, StringSplitOptions.RemoveEmptyEntries);
                return(new { id = int.Parse(items[0]), remark = (items.Length > 1 ?items[1] : "") });
            }).ToList();

            foreach (var dicotd in expDicPrimaryOtds)
            {
                if (dicotd.EXP_DIC_PrimaryOTD1.Count != 0)
                {
                    continue;
                }
                var remark = otdRemarks.FirstOrDefault(e => e.id == dicotd.Id);
                var entity = new EXP_ExpertiseStageRemark
                {
                    OtdId      = dicotd.Id,
                    NameRemark = remark != null?string.Format("{0} - {1}", dicotd.FullName, remark.remark) : dicotd.FullName,
                                     ExecuterId = employee.Id,
                                     StageId    = model.Id,
                                     RemarkDate = DateTime.Now
                };
                AppContext.EXP_ExpertiseStageRemark.Add(entity);
            }


            AppContext.SaveChanges();
            return(true);
        }
        public ActionResult FileUpload(EXP_ExpertiseStageRemark document, IEnumerable <HttpPostedFileBase> files)
        {
            var repository = new DrugDeclarationRepository();
            var remark     = repository.GetRemarksListFiles(document.Id);
            var model      = GetDrugDeclarationById(remark.EXP_ExpertiseStage.DeclarationId.ToString());

            if (files == null)
            {
                files = new List <HttpPostedFileBase>();
            }
            var httpPostedFileBases = files as HttpPostedFileBase[] ?? files.ToArray();

            for (int i = 0; i < httpPostedFileBases.Count(); i++)
            {
                HttpPostedFileBase file = httpPostedFileBases[i];
                Guid   fileId           = Guid.NewGuid();
                var    code             = repository.GetRemarkCode();
                var    path             = model.ObjectId;
                string savedFileName    = file.FileName;

                var ownId          = UserHelper.GetCurrentEmployee().Id;
                int?currentStageId = null;

                string        root     = ConfigurationManager.AppSettings["AttachPath"];
                string        fullName = Path.Combine(root, FileHelper.Root, model.ObjectId ?? "", code ?? "", savedFileName);
                DirectoryInfo info     =
                    new DirectoryInfo(Path.Combine(root, FileHelper.Root, model.ObjectId ?? "", code ?? ""));
                if (!info.Exists)
                {
                    info.Create();
                }
                file.SaveAs(fullName);

                var fileLink = new FileLink()
                {
                    Id          = fileId,
                    CreateDate  = DateTime.Now,
                    CategoryId  = !string.IsNullOrEmpty(code) ? (Guid?)Guid.Parse(code) : null,
                    DocumentId  = !string.IsNullOrEmpty(path) ? (Guid?)Guid.Parse(path) : null,
                    FileName    = savedFileName,
                    OwnerId     = ownId,
                    Version     = 1,
                    Comment     = remark.Id.ToString(),
                    Language    = "",
                    PageNumbers = null,
                    StageId     = null
                };
                repository.SaveRemarkFile(fileLink, remark);
            }
            return(RedirectToAction("Edit", new { Id = model.ObjectId }));
        }