public string UploadDoc(string fileName)
        {
            string dir = "~/Content/SystemDoc/";
            bool isExist = System.IO.Directory.Exists(HttpContext.Current.Server.MapPath(dir));
            if (!isExist)
            {
                System.IO.Directory.CreateDirectory(HttpContext.Current.Server.MapPath(dir));
            }
            SystemDocument x = new SystemDocument();
            x.FileName = fileName;
            x.Path = dir + fileName;
            x.Uploader = HttpContext.Current.Session["UserName"].ToString();
            x.UploadDate = DateTime.Now;

            doc.SystemDocuments.InsertOnSubmit(x);
            doc.SubmitChanges();

            return dir+fileName;
        }
        public async Task <SaveResult> SaveEntity(SystemDocumentViewModel viewModel)
        {
            SaveResult saveResult = new SaveResult();
            Dictionary <bool, string> dictionary = new Dictionary <bool, string>();

            var entity = new SystemDocument();

            try
            {
                if (_context.SystemDocument.IgnoreQueryFilters().Any(a => a.Id == viewModel.Id))
                {
                    entity = await _context.SystemDocument.IgnoreQueryFilters()
                             .Include(c => c.Document)
                             .Include(c => c.Document.DocumentType)
                             .Include(c => c.UpdatedUser)
                             .Include(c => c.CreatedUser)
                             .FirstOrDefaultAsync(a => a.Id == viewModel.Id);

                    entity.Document.DocumentTypeId = viewModel.DocumentTypeId;
                    if (viewModel.DocumentId == 0 && viewModel.FileUploaded != null)
                    {
                        // await UploadDocument(viewModel, entity);
                        await _documentBL.UploadDocument(viewModel.FileUploaded, entity.Document, viewModel.SessionUserId);
                    }
                    entity = viewModel.ToEntity(entity);
                    _context.SystemDocument.Update(entity);
                }
                else
                {
                    entity = viewModel.ToEntity(entity);

                    if (viewModel.FileUploaded != null)
                    {
                        entity.Document = new Document {
                            DocumentTypeId = viewModel.DocumentTypeId
                        };
                        await _documentBL.UploadDocument(viewModel.FileUploaded, entity.Document, viewModel.SessionUserId);

                        viewModel.DocumentId = entity.Document.Id;
                        entity.DocumentId    = entity.Document.Id;
                        //await UploadDocument(viewModel, entity);
                    }


                    _context.SystemDocument.Add(entity);
                }
                await _context.SaveChangesAsync();

                if (entity.Id > 0)
                {
                    saveResult.IsSuccess = true;
                    saveResult.Id        = entity.Id;
                    viewModel.Id         = entity.Id;
                }
            }
            catch (DbUpdateException upDateEx)
            {
                var    results = upDateEx.GetSqlerrorNo();
                string msg     = results == (int)SqlErrNo.FK ? ConstEntity.MissingValueMsg : ConstEntity.UniqueKeyMsg;
                saveResult = dictionary.GetValidateEntityResults(msg).ToSaveResult();
            }
            catch (Exception ex)
            {
                saveResult.Message = CrudError.SaveErrorMsg;
            }

            PopulateDropDowns(viewModel);
            return(saveResult);
        }