private List<FileShared> getSharedDocsModel()
        {
            List<FileShared> docs = new List<FileShared>();
            try
            {
                var files = from privilegetable in db.DX_PRIVILEGE
                            join filetable in db.DX_FILES
                            on new { key1 = privilegetable.userid, key2 = privilegetable.fileid, key3 = false }
                                equals new { key1 = SessionKeyMgmt.UserId, key2 = filetable.fileid, key3 = filetable.isarchived }
                            join versiontable in db.DX_FILEVERSION on filetable.fileid equals versiontable.fileid
                            select new { filetable, privilegetable, versiontable };

                if (files != null && files.ToList().Count > 0)
                {

                    foreach (var sharedfile in files)
                    {
                        if (sharedfile.filetable.islocked != true)
                        {
                            if (sharedfile.filetable.ownerid != SessionKeyMgmt.UserId)
                            {
                                FileShared share = new FileShared();
                                share.FileID = (sharedfile.filetable.fileid).ToString();
                                share.FileName = sharedfile.filetable.filename;
                                share.Description = sharedfile.versiontable.description;
                                share.FileVersion = sharedfile.versiontable.versionnumber;
                                share.CreationDate = (sharedfile.filetable.creationdate).ToString();
                                share.Owner = sharedfile.filetable.ownerid;
                                share.read = sharedfile.privilegetable.read;
                                share.delete = sharedfile.privilegetable.delete;
                                share.update = sharedfile.privilegetable.update;
                                share.check = sharedfile.privilegetable.check;
                                docs.Add(share);
                            }
                        }
                    }

                }
            }
            catch
            {
                ModelState.AddModelError("", "Error while getting Shared Documents");
            }
            return docs;
        }
        public ActionResult SharedFiles()
        {
            var files = from privilegetable in db.DX_PRIVILEGE
                        join filetable in db.DX_FILES
                        on new { key1 = privilegetable.userid, key2 = privilegetable.fileid,key3=false }
                            equals new { key1 = SessionKeyMgmt.UserId, key2 = filetable.fileid, key3=filetable.isarchived }
                        join versiontable in db.DX_FILEVERSION on filetable.fileid equals versiontable.fileid
                        select new { filetable, privilegetable, versiontable };

            List<FileShared> docs = new List<FileShared>();

            if (files != null && files.ToList().Count > 0)
            {
                foreach(var sharedfile in files)
                {
                    if (sharedfile.filetable.isarchived == true)
                    {
                        ModelState.AddModelError("", "Permission Denied: The file is in archived state");
                    }
                    if (sharedfile.filetable.ownerid != SessionKeyMgmt.UserId && sharedfile.filetable.latestversion==sharedfile.versiontable.versionnumber && sharedfile.privilegetable.reason=="shared")
                    {
                        FileShared share = new FileShared();
                        share.FileID = (sharedfile.filetable.fileid).ToString();
                        share.FileName = sharedfile.filetable.filename;
                        share.Description = sharedfile.versiontable.description;
                        share.FileVersion = sharedfile.filetable.latestversion;
                        share.CreationDate = (sharedfile.filetable.creationdate).ToString();
                        share.Owner = sharedfile.filetable.ownerid;
                        share.read = sharedfile.privilegetable.read;
                        share.delete = sharedfile.privilegetable.delete;
                        share.update = sharedfile.privilegetable.update;
                        share.check = sharedfile.privilegetable.check;
                        share.islocked = Convert.ToBoolean(sharedfile.filetable.islocked);
                        share.lockedby = sharedfile.filetable.lockedby;
                        docs.Add(share);
                     }
                }
                return View("SharedFiles",docs);
            }
            else
            {
                ModelState.AddModelError("", "No files have been shared with you");
                return View("SharedFiles",docs);
            }
        }