Esempio n. 1
0
        public JsonResult CompanySearch(string company)
        {
            List <DocumentMovement> CList = db.DocumentMovements.Where(v => v.Description == company && v.Type == Movement.Incoming).OrderBy(c => c.DateCreated).ToList();
            string us = MiscClass.getUserUnit().ToString();
            List <DocumentMovement> CLists = new List <DocumentMovement>();

            int f = 0;

            foreach (var item in CList)
            {
                List <DocumentMovement> c = db.DocumentMovements.Where(v => v.PrefID == item.PrefID).ToList();

                DocumentMovement df = c.Where(x => x.PrefID == item.PrefID).LastOrDefault();

                if (df.Status == Status.Confirmed && df.Destination == us && df.Type == Movement.Incoming)
                {
                    CLists.Add(item);
                }
                //if (c != null)
                //{
                //    if (c.Destination == us)
                //    {
                //        CLists.Add(item);
                //        //CList.RemoveAt(f);
                //    }
                //}


                f = f + 1;
            }


            return(Json(CLists, JsonRequestBehavior.AllowGet));
        }
        public ActionResult Confirm(int id)
        {
            DocumentMovement documentMovement = db.DocumentMovements.Find(id);

            if (documentMovement == null)
            {
                return(HttpNotFound());
            }

            var Incoming = documentMovement;

            documentMovement.DateStatus      = DateTime.Now;
            documentMovement.Status          = Status.Confirmed;
            db.Entry(documentMovement).State = EntityState.Modified;
            db.SaveChanges();
            Audit.Trail(documentMovement.PrefID, eAction.Confirmed, documentMovement.Id.ToString());

            Incoming.Type        = Movement.Incoming;
            Incoming.Status      = Status.Confirmed;
            Incoming.Source      = documentMovement.Destination;
            Incoming.Destination = MiscClass.getUserUnit().ToString();
            db.DocumentMovements.Add(Incoming);
            db.SaveChanges();
            Audit.Trail(Incoming.PrefID, eAction.Create, Incoming.Id.ToString());


            return(RedirectToAction("Notifications"));
        }
Esempio n. 3
0
        // GET: Documents/Create
        public ActionResult CreateBackLog()
        {
            ViewBag.FileTypeId = new SelectList(db.FileTypes, "FileTypeId", "Description");
            int s = MiscClass.getUserUnit();

            ViewBag.UnitId = new SelectList(db.Units.Where(x => x.UnitId == s).ToList(), "UnitId", "Description");
            ViewBag.DeptId = new SelectList(db.Departments.OrderBy(x => x.Description).ToList(), "DeptID", "Description");
            return(View());
        }
Esempio n. 4
0
        public JsonResult NotificationCount()
        {
            int count = 0;
            var d     = MiscClass.getUserUnit().ToString();
            var t     = db.DocumentMovements.Where(k => k.Destination == d && k.Status == Status.Pending).OrderBy(x => x.DateCreated).ToList();

            count = t.Count;
            return(Json(count, JsonRequestBehavior.AllowGet));
        }
Esempio n. 5
0
        public JsonResult getData(string FileID)
        {
            var         cd = db.DocumentMovements.Where(x => x.PrefID == FileID && x.Type == Movement.Incoming).FirstOrDefault();
            DisplayData ds = new DisplayData();

            ds.PrefID      = cd.PrefID;
            ds.Destination = MiscClass.getUnit(Convert.ToInt32(cd.Destination));
            ds.FileType    = MiscClass.getFileType(cd.FileType);
            ds.Description = cd.Description;
            ds.DateCreated = Convert.ToDateTime(cd.DateCreated).ToShortDateString();

            return(Json(ds, JsonRequestBehavior.AllowGet));
        }
Esempio n. 6
0
        // GET: Documents
        public ActionResult Index()
        {
            var             unit      = MiscClass.getUserUnit();
            List <Document> documents = new List <Document>();

            if (User.IsInRole("Super Admin"))
            {
                documents = db.Documents.Include(d => d.FileType).Include(d => d.Unit).ToList();
            }
            else
            {
                documents = db.Documents.Where(x => x.UnitId == unit).Include(d => d.FileType).Include(d => d.Unit).ToList();
            }
            return(View(documents));
        }
Esempio n. 7
0
    void Awake()
    {
        ///////////////////////////////////////////LOAD

        miscClass = XmlLoad <MiscClass>(file);
        Debug.Log("xml cargado: " + file.name);

        ///////////////////////////////////////////SAVE

        //MiscClass miscClass = new MiscClass();

        //miscClass.gold = "gold";
        //miscClass.placeYourbet = "Place your bet";
        //miscClass.bet = "Bet";
        //miscClass.exit = "Exit";
        //miscClass.rolltheDice = "Rol the dice";
        //miscClass.roll = "Roll";
        //miscClass.pressAnykey = "Press Any Key";
        //miscClass.player = "Player";
        //miscClass.opponent = "Opponent";
        //miscClass.score = "Score";
        //miscClass.roundScore = "Round Score";
        //miscClass.pass = "******";
        //miscClass.youWin = "You Win!";
        //miscClass.youLose = "You Lose";
        //miscClass.warningBet = "You must bet some gold";
        //miscClass.playerStarts = "Player Starts";
        //miscClass.opponentStarts = "Opponent Starts";
        //miscClass.draw = "Draw";
        //miscClass.rollAgain = "Roll Again";
        //miscClass.badLuck = "Bad luck";
        //miscClass.opponentFail = "Opponent fails";
        //miscClass.yourTurn = "Your turn";
        //miscClass.luckyOne = "Lucky One!!";
        //miscClass.opponenPasses = "Opponent Passes";
        //miscClass.yourEarn = "You earn ";

        //miscClass.bottle = "Alcohol bottle";
        //miscClass.shopSentence = "What do you have for sale?";

        //SaveXML<MiscClass>(Application.dataPath + "/Dialogue/", "MiscText_Eng.xml", miscClass);
        //print("xml salvado, ruta: " + Application.dataPath);

        ////////////////////////////////////////////
    }
Esempio n. 8
0
        public JsonResult getCompanyFiles(int ID)
        {
            var             company = db.Companys.Where(c => c.Id == ID).FirstOrDefault();
            List <Document> ds      = db.Documents.Where(x => x.Description == company.Description).ToList();

            List <DisplayData> dt = new List <DisplayData>();

            foreach (var item in ds)
            {
                DisplayData ns = new DisplayData();
                ns.PrefID      = item.FileId;
                ns.Description = item.Subject;
                ns.FileType    = MiscClass.getFileType(item.FileTypeId);
                ns.DateCreated = item.DateCreated.Value.ToShortDateString();

                dt.Add(ns);
            }
            return(Json(dt, JsonRequestBehavior.AllowGet));
        }
Esempio n. 9
0
        public JsonResult GetDocumentDetails(string FileID)
        {
            DocDetails detail = new DocDetails();
            Document   s      = db.Documents.Where(n => n.FileId == FileID).FirstOrDefault();

            if (s != null)
            {
                detail.FileId      = s.FileId;
                detail.Subject     = s.Subject;
                detail.Description = s.Description;
                detail.FileType    = db.FileTypes.Where(n => n.FileTypeId == s.FileTypeId).FirstOrDefault().Description;
                detail.DateCreated = s.DateCreated.Value.ToShortDateString();
                detail.UserID      = MiscClass.GetFullName(s.UserID);
                return(Json(detail, JsonRequestBehavior.AllowGet));
            }
            else
            {
                detail = null;
                return(Json("Empty", JsonRequestBehavior.AllowGet));
            }
        }
Esempio n. 10
0
        public ActionResult Index(HttpPostedFileBase upload)
        {
            if (ModelState.IsValid)
            {
                if (upload != null && upload.ContentLength > 0)
                {
                    // ExcelDataReader works with the binary Excel file, so it needs a FileStream
                    // to get started. This is how we avoid dependencies on ACE or Interop:
                    Stream stream = upload.InputStream;

                    // We return the interface, so that
                    IExcelDataReader reader = null;


                    if (upload.FileName.EndsWith(".xls"))
                    {
                        reader = ExcelReaderFactory.CreateBinaryReader(stream);
                    }
                    else if (upload.FileName.EndsWith(".xlsx"))
                    {
                        reader = ExcelReaderFactory.CreateOpenXmlReader(stream);
                    }
                    else
                    {
                        ModelState.AddModelError("File", "This file format is not supported");
                        return(View());
                    }

                    //reader.IsFirstRowAsColumnNames = true;

                    DataSet result = reader.AsDataSet(new ExcelDataSetConfiguration()
                    {
                        ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
                        {
                            UseHeaderRow = true
                        }
                    });
                    reader.Close();

                    DataTable tbl = result.Tables[0];

                    foreach (DataRow item in tbl.Rows)
                    {
                        Document document = new Document();

                        document.UserID      = HttpContext.User.Identity.Name;
                        document.Subject     = item[2].ToString();
                        document.Description = item[1].ToString();
                        document.DateCreated = Convert.ToDateTime(item[3].ToString());
                        document.UnitId      = Convert.ToInt32(item[4].ToString());

                        string fd     = item[5].ToString();
                        string prefix = "";
                        string ts     = MiscClass.GenerateNumber(5);

                        switch (fd)
                        {
                        case "LETTERS & CORESPONDENCES":
                            prefix              = "LTR";
                            document.FileId     = prefix + "/" + DateTime.Today.Year.ToString() + "/" + ts;
                            document.FileTypeId = 2;
                            break;

                        case "FILE":
                            document.FileId     = item[0].ToString();
                            document.FileTypeId = 1;
                            break;

                        case "PROPOSAL":
                            prefix              = "PRP";
                            document.FileId     = prefix + "/" + DateTime.Today.Year.ToString() + "/" + ts;
                            document.FileTypeId = 3;
                            break;

                        case "REQUEST":
                            prefix              = "TEMP";
                            document.FileId     = prefix + "/" + DateTime.Today.Year.ToString() + "/" + ts;
                            document.FileTypeId = 5;
                            break;
                        }



                        var isExist = db.Documents.Where(x => x.FileId == document.FileId).FirstOrDefault();

                        if (isExist == null)
                        {
                            DocumentMovement doc = new DocumentMovement();
                            doc.DateCreated = document.DateCreated;
                            doc.Type        = Movement.Incoming;
                            doc.Source      = MiscClass.getUserUnit().ToString();
                            doc.Destination = document.UnitId.ToString();
                            doc.PrefID      = document.FileId;
                            doc.Subject     = document.Subject;
                            doc.Status      = Status.Confirmed;
                            doc.DateStatus  = document.DateCreated;
                            doc.Description = document.Description;
                            doc.FileType    = document.FileTypeId;

                            db.DocumentMovements.Add(doc);
                            db.Documents.Add(document);

                            db.SaveChanges();
                            Audit.Trail(doc.PrefID, eAction.Create, doc.Id.ToString());
                        }
                    }

                    ViewBag.recCounts = tbl.Rows.Count;
                    ViewBag.Uploaded  = 1;

                    return(View(result.Tables[0]));
                }
                else
                {
                    ModelState.AddModelError("File", "Please Upload Your file");
                }
            }
            return(View());
        }
Esempio n. 11
0
        public ActionResult Index()
        {
            int           unit = MiscClass.getUserUnit();
            HomeAnalytics data = new HomeAnalytics();

            //Analytics for Today
            data._TDC = db.Documents.Where(x => (DbFunctions.TruncateTime(x.DateCreated) == DateTime.Today.Date) && (x.UnitId == unit)).Count();
            data._TID = db.DocumentMovements.Where(x => (DbFunctions.TruncateTime(x.DateCreated) == DateTime.Today.Date) && (x.Type == Movement.Incoming) && (x.Destination == unit.ToString())).Count();
            data._TOD = db.DocumentMovements.Where(x => (DbFunctions.TruncateTime(x.DateCreated) == DateTime.Today.Date) && (x.Type == Movement.Outgoing) && (x.Source == unit.ToString())).Count();


            //Analytics for 7 Days
            var currDate  = DateTime.Today.Date;
            var prev7Date = DateTime.Today.AddDays(-7);

            data._7DC = db.Documents
                        .Where(x => (DbFunctions.TruncateTime(x.DateCreated) <= currDate &&
                                     DbFunctions
                                     .TruncateTime(x.DateCreated) >= prev7Date) &&
                               (x.UnitId == unit))
                        .Count();

            data._7ID = db.DocumentMovements
                        .Where(x =>
                               (DbFunctions
                                .TruncateTime(x.DateCreated) <= currDate &&
                                DbFunctions
                                .TruncateTime(x.DateCreated) >= prev7Date) &&
                               (x.Type == Movement.Incoming) && (x.Destination == unit.ToString()))
                        .Count();

            data._7OD = db.DocumentMovements
                        .Where(x =>
                               (DbFunctions
                                .TruncateTime(x.DateCreated) <= currDate &&
                                DbFunctions
                                .TruncateTime(x.DateCreated) >= prev7Date) &&
                               (x.Type == Movement.Outgoing) && (x.Source == unit.ToString()))
                        .Count();;


            //Analytics for 30 days
            prev7Date = DateTime.Today.AddDays(-30);

            data._30DC = db.Documents
                         .Where(x =>
                                (DbFunctions
                                 .TruncateTime(x.DateCreated) <= currDate &&
                                 DbFunctions
                                 .TruncateTime(x.DateCreated) >= prev7Date) &&
                                (x.UnitId == unit))
                         .Count();

            data._30ID = db.DocumentMovements
                         .Where(x =>
                                (DbFunctions
                                 .TruncateTime(x.DateCreated) <= currDate &&
                                 DbFunctions
                                 .TruncateTime(x.DateCreated) >= prev7Date) &&
                                (x.Type == Movement.Incoming) && (x.Destination == unit.ToString()))
                         .Count();

            data._30OD = db.DocumentMovements
                         .Where(x =>
                                (DbFunctions
                                 .TruncateTime(x.DateCreated) <= currDate &&
                                 DbFunctions
                                 .TruncateTime(x.DateCreated) >= prev7Date) &&
                                (x.Type == Movement.Outgoing) && (x.Source == unit.ToString()))
                         .Count();

            //ViewBag.Analytics = data;

            return(View(data));
        }
Esempio n. 12
0
        //[ValidateAntiForgeryToken]
        public ActionResult CreateSend([Bind(Include = "Id,FileId,Description,Subject,DateCreated,UnitId,FileTypeId,Destination,DateSend")] CreateSend Cdocument)
        {
            try
            {
                Document document = new Document();
                document.Description = Cdocument.Description;
                document.FileId      = Cdocument.FileId;
                document.Subject     = Cdocument.Subject;
                document.FileTypeId  = Cdocument.FileTypeId;
                document.UnitId      = Cdocument.UnitId;

                document.UserID      = HttpContext.User.Identity.Name;
                document.DateCreated = DateTime.Now;
                if (ModelState.IsValid)
                {
                    if (document.FileId == null)
                    {
                        var    td     = db.FileTypes.Where(x => x.FileTypeId == document.FileTypeId).FirstOrDefault();
                        string prefix = "";

                        switch (td.Description.ToUpper())
                        {
                        case "PROPOSALS":
                            prefix = "PRP";
                            break;

                        case "LETTERS":
                            prefix = "LTR";
                            break;

                        case "MEMO":
                            prefix = "MEM";
                            break;

                        default:
                            prefix = "TEMP";
                            break;
                        }
                        string ts = MiscClass.GenerateNumber(5);
                        document.FileId = prefix + "/" + DateTime.Today.Year.ToString() + "/" + ts;
                    }
                    var isExist = db.Documents.Where(x => x.FileId == document.FileId).FirstOrDefault();

                    if (isExist == null)
                    {
                        DocumentMovement doc = new DocumentMovement();
                        doc.DateCreated = document.DateCreated;
                        doc.Type        = Movement.Incoming;
                        doc.Source      = MiscClass.getUserUnit().ToString();
                        doc.Destination = document.UnitId.ToString();
                        doc.PrefID      = document.FileId;
                        doc.Status      = Status.Confirmed;
                        doc.DateStatus  = document.DateCreated;
                        doc.Description = document.Description;
                        doc.FileType    = document.FileTypeId;
                        doc.Subject     = document.Subject;

                        db.DocumentMovements.Add(doc);
                        db.Documents.Add(document);

                        db.SaveChanges();
                        Audit.Trail(doc.PrefID, eAction.Create, doc.Id.ToString());

                        var outgoing = db.DocumentMovements.Where(x => x.PrefID == document.FileId).FirstOrDefault();
                        if (outgoing != null)
                        {
                            var ds = Convert.ToDateTime(Cdocument.DateSend);
                            outgoing.DateCreated = ds;
                            outgoing.Source      = outgoing.Destination;
                            outgoing.Destination = Cdocument.Destination;
                            outgoing.Type        = Movement.Outgoing;
                            outgoing.Status      = Status.Pending;

                            db.DocumentMovements.Add(outgoing);
                            Audit.Trail(outgoing.PrefID, eAction.Create, outgoing.Id.ToString());
                            db.SaveChanges();
                        }
                    }
                    else
                    {
                        ModelState.AddModelError(String.Empty, "FileID Already Exists");
                        ViewBag.FileTypeId = new SelectList(db.FileTypes, "FileTypeId", "Description", document.FileTypeId);
                        ViewBag.UnitId     = new SelectList(db.Units, "UnitId", "Description", document.UnitId);
                        return(View(document));
                    }


                    return(RedirectToAction("Index"));
                }

                ViewBag.FileTypeId = new SelectList(db.FileTypes, "FileTypeId", "Description", document.FileTypeId);
                ViewBag.UnitId     = new SelectList(db.Units, "UnitId", "Description", document.UnitId);
                return(View(document));
            }
            catch (Exception e)
            {
                var ed = e;
                throw;
            }
        }
Esempio n. 13
0
        //[ValidateAntiForgeryToken]
        public ActionResult CreateSendBackLog([Bind(Include = "Id,FileId,Description,Subject,DateCreated,UnitId,FileTypeId,Destination,DateSend")] CreateSend Cdocument)
        {
            try
            {
                Document document = new Document();
                document.Description = Cdocument.Description;
                document.FileId      = Cdocument.FileId;
                document.Subject     = Cdocument.Subject;
                document.FileTypeId  = Cdocument.FileTypeId;
                document.UnitId      = Cdocument.UnitId;

                document.UserID = HttpContext.User.Identity.Name;
                //var s = Convert.ToDateTime(Cdocument.DateCreated);
                document.DateCreated = Cdocument.DateCreated;

                //if (ModelState.IsValid)


                if ((document.FileId == null && document.FileTypeId == 1) || document.DateCreated == null)
                {
                    ModelState.AddModelError("", "Please Complete all Details File ID or Date");
                }
                else
                {
                    if (document.FileId == null)
                    {
                        var    td     = db.FileTypes.Where(x => x.FileTypeId == document.FileTypeId).FirstOrDefault();
                        string prefix = "";

                        switch (td.Description.ToUpper())
                        {
                        case "PROPOSALS":
                            prefix = "PRP";
                            break;

                        case "LETTERS":
                            prefix = "LTR";
                            break;

                        case "MEMO":
                            prefix = "MEM";
                            break;

                        default:
                            prefix = "TEMP";
                            break;
                        }
                        string ts = MiscClass.GenerateNumber(5);
                        document.FileId = prefix + "/" + DateTime.Today.Year.ToString() + "/" + ts;
                    }
                    else
                    {
                        var           sp = document.FileId.ToArray();
                        StringBuilder sd = new StringBuilder();
                        foreach (var item in sp)
                        {
                            if (item.ToString() == "&")
                            {
                                sd.Append("_");
                            }
                            else
                            {
                                sd.Append(item.ToString());
                            }
                        }
                        document.FileId = sd.ToString();
                    }
                    var isExist = db.Documents.Where(x => x.FileId == document.FileId).FirstOrDefault();

                    if (isExist == null)
                    {
                        DocumentMovement doc = new DocumentMovement();
                        doc.DateCreated = document.DateCreated;
                        doc.Type        = Movement.Incoming;
                        doc.Source      = MiscClass.getUserUnit().ToString();
                        doc.Destination = document.UnitId.ToString();
                        doc.PrefID      = document.FileId;
                        doc.Status      = Status.Confirmed;
                        doc.DateStatus  = document.DateCreated;
                        doc.Description = document.Description;
                        doc.FileType    = document.FileTypeId;
                        doc.Subject     = document.Subject;

                        db.DocumentMovements.Add(doc);
                        db.Documents.Add(document);

                        db.SaveChanges();
                        Audit.Trail(doc.PrefID, eAction.Create, doc.Id.ToString());


                        var outgoing = db.DocumentMovements.Where(x => x.PrefID == document.FileId).FirstOrDefault();
                        if (outgoing != null)
                        {
                            outgoing.DateCreated = Cdocument.DateSend;
                            outgoing.Source      = outgoing.Destination;
                            outgoing.Destination = Cdocument.Destination;
                            outgoing.Type        = Movement.Outgoing;
                            outgoing.Status      = Status.Pending;

                            db.DocumentMovements.Add(outgoing);
                            Audit.Trail(outgoing.PrefID, eAction.Create, outgoing.Id.ToString());
                            db.SaveChanges();
                        }
                    }
                    else
                    {
                        ViewBag.FileTypeId = new SelectList(db.FileTypes, "FileTypeId", "Description", document.FileTypeId);
                        ViewBag.UnitId     = new SelectList(db.Units, "UnitId", "Description", document.UnitId);
                        return(View(document));
                    }


                    return(RedirectToAction("Index"));
                }

                ViewBag.FileTypeId = new SelectList(db.FileTypes, "FileTypeId", "Description", document.FileTypeId);
                ViewBag.UnitId     = new SelectList(db.Units, "UnitId", "Description", document.UnitId);
                ViewBag.DeptId     = new SelectList(db.Departments.OrderBy(x => x.Description).ToList(), "DeptID", "Description");

                return(View(document));
            }
            catch (Exception e)
            {
                var ed = e;
                throw;
            }
        }
Esempio n. 14
0
 public User()
 {
     About = new AboutClass();
     Misc  = new MiscClass();
 }
Esempio n. 15
0
        public JsonResult getFileID(int unit)
        {
            string FileId = MiscClass.GetUniqueKey(unit);

            return(Json(FileId, JsonRequestBehavior.AllowGet));
        }
Esempio n. 16
0
 // GET: Reports
 public ActionResult Index()
 {
     ViewBag.Unit   = MiscClass.getUserUnit();
     ViewBag.UnitId = new SelectList(db.Units.OrderBy(c => c.Description), "UnitId", "Description");
     return(View());
 }
Esempio n. 17
0
        public JsonResult Index(Report report)
        {
            ReportDisplay rd = new ReportDisplay();

            report.Role = HttpContext.User.Identity.GetUserName();
            DateTime      dateFrom;
            DateTime      dateTo;
            List <string> dt    = new List <string>();
            string        dFrom = "";
            string        dTo   = "";

            dt = report.DateRange.Split('-').ToList();

            for (int i = 0; i < dt.Count; i++)
            {
                if (i == 0)
                {
                    dFrom = dt[0].ToString().Trim();
                }
                else
                {
                    dTo = dt[1].ToString().Trim();
                }
            }

            dateFrom = DateTime.Parse(dFrom);
            dateTo   = DateTime.Parse(dTo);

            if (User.IsInRole("Admin") || User.IsInRole("Super Admin"))
            {
                if (report.Unit == null)
                {
                    if (report.Option == ReportOption.Day)
                    {
                        dt.Clear();
                        dt = report.Day.Split('/').ToList();
                        string newDate = dt[1].ToString() + "/" + dt[0].ToString() + "/" + dt[2].ToString();

                        DateTime currDate = DateTime.Parse(report.Day);
                        rd.docCreated  = db.Documents.Where(x => x.DateCreated == currDate.Date).Count();
                        rd.docIncoming = db.DocumentMovements.Where(x => x.DateCreated == currDate.Date && (x.Type == Movement.Incoming)).Count();
                        rd.docOutgoing = db.DocumentMovements.Where(x => x.DateCreated == currDate.Date && (x.Type == Movement.Outgoing)).Count();

                        rd.docCreatedList = db.Documents.Where(x => x.DateCreated == currDate.Date)
                                            .Select(x => new DocDetails {
                            Description = x.Description,
                            FileId      = x.FileId,
                            Subject     = x.Subject,
                            DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                            FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileTypeId).FirstOrDefault().Description,
                            UserID      = x.UserID
                        }).ToList();

                        rd.docIncomingList = db.DocumentMovements.Where(x => x.DateCreated == currDate.Date && (x.Type == Movement.Incoming))
                                             .Select(x => new RD
                        {
                            Description = x.Description,
                            FileId      = x.PrefID,
                            Subject     = x.Subject,
                            DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                            FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileType).FirstOrDefault().Description,
                            Destination = db.Units.Where(g => g.UnitId.ToString() == (x.Destination)).FirstOrDefault().Description,
                            Source      = db.Units.Where(g => g.UnitId.ToString() == (x.Source)).FirstOrDefault().Description
                        }).ToList();

                        rd.docOutgoingList = db.DocumentMovements.Where(x => x.DateCreated == currDate.Date && (x.Type == Movement.Outgoing))
                                             .Select(x => new RD
                        {
                            Description = x.Description,
                            FileId      = x.PrefID,
                            Subject     = x.Subject,
                            DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                            FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileType).FirstOrDefault().Description,
                            Destination = db.Units.Where(g => g.UnitId.ToString() == (x.Destination)).FirstOrDefault().Description,
                            Source      = db.Units.Where(g => g.UnitId.ToString() == (x.Source)).FirstOrDefault().Description
                        }).ToList();
                    }
                    else if (report.Option == ReportOption.DateRange)
                    {
                        rd.docCreated = db.Documents
                                        .Where(x => x.DateCreated >= dateFrom.Date && (x.DateCreated <= dateTo.Date)).Count();

                        rd.docIncoming = db.DocumentMovements
                                         .Where(x => x.Type == Movement.Incoming &&
                                                (x.DateCreated >= dateFrom.Date) &&
                                                (x.DateCreated <= dateTo.Date)).Count();

                        rd.docOutgoing = db.DocumentMovements
                                         .Where(x => x.Type == Movement.Outgoing &&
                                                (x.DateCreated >= dateFrom.Date) &&
                                                (x.DateCreated <= dateTo.Date)).Count();


                        rd.docCreatedList = db.Documents
                                            .Where(x => x.DateCreated >= dateFrom.Date && (x.DateCreated <= dateTo.Date))
                                            .Select(x => new DocDetails
                        {
                            Description = x.Description,
                            FileId      = x.FileId,
                            Subject     = x.Subject,
                            DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                            FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileTypeId).FirstOrDefault().Description,
                            UserID      = x.UserID
                        }).ToList();

                        // FILE
                        rd.docCreated = db.Documents
                                        .Where(x => x.DateCreated >= dateFrom.Date && (x.DateCreated <= dateTo.Date) && x.FileTypeId == 1)
                                        .Count();

                        // Letters & Correspondences
                        rd.docCreated = db.Documents
                                        .Where(x => x.DateCreated >= dateFrom.Date && (x.DateCreated <= dateTo.Date) && x.FileTypeId == 2)
                                        .Count();
                        // Proposals
                        rd.docCreated = db.Documents
                                        .Where(x => x.DateCreated >= dateFrom.Date && (x.DateCreated <= dateTo.Date) && x.FileTypeId == 3)
                                        .Count();
                        // Memo
                        rd.docCreated = db.Documents
                                        .Where(x => x.DateCreated >= dateFrom.Date && (x.DateCreated <= dateTo.Date) && x.FileTypeId == 4)
                                        .Count();
                        // Requests
                        rd.docCreated = db.Documents
                                        .Where(x => x.DateCreated >= dateFrom.Date && (x.DateCreated <= dateTo.Date) && x.FileTypeId == 5)
                                        .Count();


                        //Incoming
                        // FILE
                        rd.docIncoming = db.DocumentMovements
                                         .Where(x => x.Type == Movement.Incoming &&
                                                (x.DateCreated >= dateFrom.Date) &&
                                                x.FileType == 1 &&
                                                (x.DateCreated <= dateTo.Date)).Count();
                        // Letters & Correspondences
                        rd.docIncoming = db.DocumentMovements
                                         .Where(x => x.Type == Movement.Incoming &&
                                                (x.DateCreated >= dateFrom.Date) &&
                                                x.FileType == 2 &&
                                                (x.DateCreated <= dateTo.Date)).Count();
                        // Proposals
                        rd.docIncoming = db.DocumentMovements
                                         .Where(x => x.Type == Movement.Incoming &&
                                                (x.DateCreated >= dateFrom.Date) &&
                                                x.FileType == 3 &&
                                                (x.DateCreated <= dateTo.Date)).Count();
                        // Memo
                        rd.docIncoming = db.DocumentMovements
                                         .Where(x => x.Type == Movement.Incoming &&
                                                (x.DateCreated >= dateFrom.Date) &&
                                                x.FileType == 4 &&
                                                (x.DateCreated <= dateTo.Date)).Count();
                        // Requests
                        rd.docIncoming = db.DocumentMovements
                                         .Where(x => x.Type == Movement.Incoming &&
                                                (x.DateCreated >= dateFrom.Date) &&
                                                x.FileType == 5 &&
                                                (x.DateCreated <= dateTo.Date)).Count();



                        //Outgoing
                        // FILE
                        rd.docIncoming = db.DocumentMovements
                                         .Where(x => x.Type == Movement.Outgoing &&
                                                (x.DateCreated >= dateFrom.Date) &&
                                                x.FileType == 1 &&
                                                (x.DateCreated <= dateTo.Date)).Count();
                        // Letters & Correspondences
                        rd.docIncoming = db.DocumentMovements
                                         .Where(x => x.Type == Movement.Outgoing &&
                                                (x.DateCreated >= dateFrom.Date) &&
                                                x.FileType == 2 &&
                                                (x.DateCreated <= dateTo.Date)).Count();
                        // Proposals
                        rd.docIncoming = db.DocumentMovements
                                         .Where(x => x.Type == Movement.Outgoing &&
                                                (x.DateCreated >= dateFrom.Date) &&
                                                x.FileType == 3 &&
                                                (x.DateCreated <= dateTo.Date)).Count();
                        // Memo
                        rd.docIncoming = db.DocumentMovements
                                         .Where(x => x.Type == Movement.Outgoing &&
                                                (x.DateCreated >= dateFrom.Date) &&
                                                x.FileType == 4 &&
                                                (x.DateCreated <= dateTo.Date)).Count();
                        // Requests
                        rd.docIncoming = db.DocumentMovements
                                         .Where(x => x.Type == Movement.Outgoing &&
                                                (x.DateCreated >= dateFrom.Date) &&
                                                x.FileType == 5 &&
                                                (x.DateCreated <= dateTo.Date)).Count();

                        try
                        {
                            //rd.docIncomingList = db.DocumentMovements
                            //    .Where(c => c.Type == Movement.Incoming && (c.DateCreated >= dateFrom) && (c.).ToList();
                            //rd.docIncomingList = db.DocumentMovements
                            //    .Where(x => x.Type == Movement.Incoming &&
                            //    (x.DateCreated >= dateFrom.Date) &&
                            //    (x.DateCreated <= dateTo.Date))
                            //    .Select(x => new RD
                            //    {
                            //        Description = x.Description,
                            //        FileId = x.PrefID,
                            //        Subject = x.Subject,
                            //        DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                            //        FileType = db.FileTypes.Where(d => d.FileTypeId == x.FileType).FirstOrDefault().Description,
                            //        Destination = db.Units.Where(g => g.UnitId == Convert.ToInt16(x.Destination)).FirstOrDefault().Description,
                            //        Source = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Source)).FirstOrDefault().Description
                            //    }).ToList();

                            rd.docOutgoingList = db.DocumentMovements
                                                 .Where(x => x.Type == Movement.Outgoing &&
                                                        (x.DateCreated >= dateFrom.Date) &&
                                                        (x.DateCreated <= dateTo.Date))
                                                 .Select(x => new RD
                            {
                                Description = x.Description,
                                FileId      = x.PrefID,
                                Subject     = x.Subject,
                                DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                                FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileType).FirstOrDefault().Description,
                                Source      = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Source)).FirstOrDefault().Description,
                                Destination = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Destination)).FirstOrDefault().Description,
                            }).ToList();
                        }
                        catch (Exception ex)
                        {
                            throw;
                        }
                    }
                    else if (report.Option == ReportOption.Year)
                    {
                        rd.docCreated  = db.Documents.Where(x => x.DateCreated.Value.Year.ToString() == report.Year).Count();
                        rd.docIncoming = db.DocumentMovements.Where(x => x.DateCreated.Value.Year.ToString() == report.Year && (x.Type == Movement.Incoming)).Count();
                        rd.docOutgoing = db.DocumentMovements.Where(x => x.DateCreated.Value.Year.ToString() == report.Year && (x.Type == Movement.Outgoing)).Count();

                        rd.docCreatedList = db.Documents.Where(x => x.DateCreated.Value.Year.ToString() == report.Year)
                                            .Select(x => new DocDetails
                        {
                            Description = x.Description,
                            FileId      = x.FileId,
                            Subject     = x.Subject,
                            DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                            FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileTypeId).FirstOrDefault().Description,
                            UserID      = x.UserID
                        }).ToList();

                        rd.docIncomingList = db.DocumentMovements
                                             .Where(x => x.DateCreated.Value.Year.ToString() == report.Year && (x.Type == Movement.Incoming))
                                             .Select(x => new RD
                        {
                            Description = x.Description,
                            FileId      = x.PrefID,
                            Subject     = x.Subject,
                            DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                            FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileType).FirstOrDefault().Description,
                            Destination = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Destination)).FirstOrDefault().Description,
                            Source      = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Source)).FirstOrDefault().Description
                        }).ToList();

                        rd.docOutgoingList = db.DocumentMovements
                                             .Where(x => x.DateCreated.Value.Year.ToString() == report.Year && (x.Type == Movement.Outgoing))
                                             .Select(x => new RD
                        {
                            Description = x.Description,
                            FileId      = x.PrefID,
                            Subject     = x.Subject,
                            DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                            FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileType).FirstOrDefault().Description,
                            Source      = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Source)).FirstOrDefault().Description,
                            Destination = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Destination)).FirstOrDefault().Description,
                        }).ToList();
                    }
                }
                else
                {
                    int unit = Convert.ToInt32(report.Unit);
                    if (report.Option == ReportOption.Day)
                    {
                        dt.Clear();
                        dt = report.Day.Split('/').ToList();
                        string newDate = dt[1].ToString() + "/" + dt[0].ToString() + "/" + dt[2].ToString();

                        DateTime currDate = DateTime.Parse(report.Day);

                        rd.docCreated  = db.Documents.Where(x => x.DateCreated == currDate && (x.UnitId == unit)).Count();
                        rd.docIncoming = db.DocumentMovements.Where(x => x.DateCreated == currDate && (x.Type == Movement.Incoming) && (x.Destination == unit.ToString())).Count();
                        rd.docOutgoing = db.DocumentMovements.Where(x => x.DateCreated == currDate && (x.Type == Movement.Outgoing) && (x.Source == unit.ToString())).Count();

                        rd.docCreatedList = db.Documents.Where(x => x.DateCreated == currDate && (x.UnitId == unit))
                                            .Select(x => new DocDetails
                        {
                            Description = x.Description,
                            FileId      = x.FileId,
                            Subject     = x.Subject,
                            DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                            FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileTypeId).FirstOrDefault().Description,
                            UserID      = x.UserID
                        }).ToList();

                        rd.docIncomingList = db.DocumentMovements
                                             .Where(x => x.DateCreated == currDate && (x.Type == Movement.Incoming) && (x.Destination == unit.ToString()))
                                             .Select(x => new RD
                        {
                            Description = x.Description,
                            FileId      = x.PrefID,
                            Subject     = x.Subject,
                            DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                            FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileType).FirstOrDefault().Description,
                            Destination = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Destination)).FirstOrDefault().Description,
                            Source      = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Source)).FirstOrDefault().Description
                        }).ToList();

                        rd.docOutgoingList = db.DocumentMovements
                                             .Where(x => x.DateCreated == currDate && (x.Type == Movement.Outgoing) && (x.Source == unit.ToString()))
                                             .Select(x => new RD
                        {
                            Description = x.Description,
                            FileId      = x.PrefID,
                            Subject     = x.Subject,
                            DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                            FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileType).FirstOrDefault().Description,
                            Source      = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Source)).FirstOrDefault().Description,
                            Destination = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Destination)).FirstOrDefault().Description,
                        }).ToList();
                    }
                    else if (report.Option == ReportOption.DateRange)
                    {
                        //rd.docCreated = db.Documents
                        //    .Where(x => x.DateCreated >= dateFrom && x.DateCreated <= dateTo).Count();

                        rd.docCreated = db.Documents
                                        .Where(x => (DbFunctions.TruncateTime(x.DateCreated) <= dateFrom && DbFunctions.TruncateTime(x.DateCreated) >= dateTo) && (x.UnitId == unit))
                                        .Count();

                        rd.docIncoming = db.DocumentMovements
                                         .Where(x => (DbFunctions.TruncateTime(x.DateCreated) <= dateFrom && DbFunctions.TruncateTime(x.DateCreated) >= dateTo) && (x.Type == Movement.Incoming) && (x.Destination == unit.ToString()))
                                         .Count();

                        rd.docOutgoing = db.DocumentMovements
                                         .Where(x => (DbFunctions.TruncateTime(x.DateCreated) <= dateFrom && DbFunctions.TruncateTime(x.DateCreated) >= dateTo) && (x.Type == Movement.Outgoing) && (x.Source == unit.ToString()))
                                         .Count();

                        rd.docCreatedList = db.Documents
                                            .Where(x => (DbFunctions.TruncateTime(x.DateCreated) <= dateFrom && DbFunctions.TruncateTime(x.DateCreated) >= dateTo) && (x.UnitId == unit))
                                            .Select(x => new DocDetails
                        {
                            Description = x.Description,
                            FileId      = x.FileId,
                            Subject     = x.Subject,
                            DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                            FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileTypeId).FirstOrDefault().Description,
                            UserID      = x.UserID
                        }).ToList();

                        rd.docIncomingList = db.DocumentMovements
                                             .Where(x => (DbFunctions.TruncateTime(x.DateCreated) <= dateFrom && DbFunctions.TruncateTime(x.DateCreated) >= dateTo) && (x.Type == Movement.Incoming) && (x.Destination == unit.ToString()))
                                             .Select(x => new RD
                        {
                            Description = x.Description,
                            FileId      = x.PrefID,
                            Subject     = x.Subject,
                            DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                            FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileType).FirstOrDefault().Description,
                            Destination = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Destination)).FirstOrDefault().Description,
                            Source      = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Source)).FirstOrDefault().Description
                        }).ToList();

                        rd.docOutgoingList = db.DocumentMovements
                                             .Where(x => (DbFunctions.TruncateTime(x.DateCreated) <= dateFrom && DbFunctions.TruncateTime(x.DateCreated) >= dateTo) && (x.Type == Movement.Outgoing) && (x.Source == unit.ToString()))
                                             .Select(x => new RD
                        {
                            Description = x.Description,
                            FileId      = x.PrefID,
                            Subject     = x.Subject,
                            DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                            FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileType).FirstOrDefault().Description,
                            Source      = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Source)).FirstOrDefault().Description,
                            Destination = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Destination)).FirstOrDefault().Description,
                        }).ToList();
                    }
                    else if (report.Option == ReportOption.Year)
                    {
                        rd.docCreated  = db.Documents.Where(x => x.DateCreated.Value.Year.ToString() == report.Year && (x.UnitId == unit)).Count();
                        rd.docIncoming = db.DocumentMovements.Where(x => x.DateCreated.Value.Year.ToString() == report.Year && (x.Type == Movement.Incoming) && (x.Destination == unit.ToString())).Count();
                        rd.docOutgoing = db.DocumentMovements.Where(x => x.DateCreated.Value.Year.ToString() == report.Year && (x.Type == Movement.Outgoing) && (x.Source == unit.ToString())).Count();

                        rd.docCreatedList = db.Documents
                                            .Where(x => x.DateCreated.Value.Year.ToString() == report.Year && (x.UnitId == unit))
                                            .Select(x => new DocDetails
                        {
                            Description = x.Description,
                            FileId      = x.FileId,
                            Subject     = x.Subject,
                            DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                            FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileTypeId).FirstOrDefault().Description,
                            UserID      = x.UserID
                        }).ToList();

                        rd.docIncomingList = db.DocumentMovements
                                             .Where(x => x.DateCreated.Value.Year.ToString() == report.Year && (x.Type == Movement.Incoming) && (x.Destination == unit.ToString()))
                                             .Select(x => new RD
                        {
                            Description = x.Description,
                            FileId      = x.PrefID,
                            Subject     = x.Subject,
                            DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                            FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileType).FirstOrDefault().Description,
                            Destination = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Destination)).FirstOrDefault().Description,
                            Source      = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Source)).FirstOrDefault().Description
                        }).ToList();

                        rd.docOutgoingList = db.DocumentMovements
                                             .Where(x => x.DateCreated.Value.Year.ToString() == report.Year && (x.Type == Movement.Outgoing) && (x.Source == unit.ToString()))
                                             .Select(x => new RD
                        {
                            Description = x.Description,
                            FileId      = x.PrefID,
                            Subject     = x.Subject,
                            DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                            FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileType).FirstOrDefault().Description,
                            Source      = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Source)).FirstOrDefault().Description,
                            Destination = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Destination)).FirstOrDefault().Description,
                        }).ToList();
                    }
                }
            }
            else
            {
                int unit = Convert.ToInt32(report.Unit);
                if (report.Option == ReportOption.Day)
                {
                    dt.Clear();
                    dt = report.Day.Split('/').ToList();
                    string newDate = dt[1].ToString() + "/" + dt[0].ToString() + "/" + dt[2].ToString();

                    DateTime currDate = DateTime.Parse(report.Day);

                    rd.docCreated  = db.Documents.Where(x => x.DateCreated == currDate && (x.UnitId == unit)).Count();
                    rd.docIncoming = db.DocumentMovements.Where(x => x.DateCreated == currDate && (x.Type == Movement.Incoming) && (x.Destination == unit.ToString())).Count();
                    rd.docOutgoing = db.DocumentMovements.Where(x => x.DateCreated == currDate && (x.Type == Movement.Outgoing) && (x.Source == unit.ToString())).Count();

                    rd.docCreatedList = db.Documents.Where(x => x.DateCreated == currDate && (x.UnitId == unit))
                                        .Select(x => new DocDetails
                    {
                        Description = x.Description,
                        FileId      = x.FileId,
                        Subject     = x.Subject,
                        DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                        FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileTypeId).FirstOrDefault().Description,
                        UserID      = x.UserID
                    }).ToList();

                    rd.docIncomingList = db.DocumentMovements.Where(x => x.DateCreated == currDate && (x.Type == Movement.Incoming) && (x.Destination == unit.ToString()))
                                         .Select(x => new RD
                    {
                        Description = x.Description,
                        FileId      = x.PrefID,
                        Subject     = x.Subject,
                        DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                        FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileType).FirstOrDefault().Description,
                        Destination = db.Units.Where(g => g.UnitId.ToString() == (x.Destination)).FirstOrDefault().Description,
                        Source      = db.Units.Where(g => g.UnitId.ToString() == (x.Source)).FirstOrDefault().Description
                    }).ToList();

                    rd.docOutgoingList = db.DocumentMovements
                                         .Where(x => x.DateCreated == currDate && (x.Type == Movement.Outgoing) && (x.Source == unit.ToString()))
                                         .Select(x => new RD
                    {
                        Description = x.Description,
                        FileId      = x.PrefID,
                        Subject     = x.Subject,
                        DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                        FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileType).FirstOrDefault().Description,
                        Destination = db.Units.Where(g => g.UnitId.ToString() == (x.Destination)).FirstOrDefault().Description,
                        Source      = db.Units.Where(g => g.UnitId.ToString() == (x.Source)).FirstOrDefault().Description
                    }).ToList();
                }
                else if (report.Option == ReportOption.DateRange)
                {
                    //rd.docCreated = db.Documents
                    //    .Where(x => x.DateCreated >= dateFrom && x.DateCreated <= dateTo).Count();

                    rd.docCreated = db.Documents
                                    .Where(x => (DbFunctions.TruncateTime(x.DateCreated) <= dateFrom && DbFunctions.TruncateTime(x.DateCreated) >= dateTo) && (x.UnitId == unit))
                                    .Count();

                    rd.docIncoming = db.DocumentMovements
                                     .Where(x => (DbFunctions.TruncateTime(x.DateCreated) <= dateFrom && DbFunctions.TruncateTime(x.DateCreated) >= dateTo) && (x.Type == Movement.Incoming) && (x.Destination == unit.ToString()))
                                     .Count();

                    rd.docOutgoing = db.DocumentMovements
                                     .Where(x => (DbFunctions.TruncateTime(x.DateCreated) <= dateFrom && DbFunctions.TruncateTime(x.DateCreated) >= dateTo) && (x.Type == Movement.Outgoing) && (x.Source == unit.ToString()))
                                     .Count();

                    rd.docCreatedList = db.Documents
                                        .Where(x => (DbFunctions.TruncateTime(x.DateCreated) <= dateFrom && DbFunctions.TruncateTime(x.DateCreated) >= dateTo) && (x.UnitId == unit))
                                        .Select(x => new DocDetails
                    {
                        Description = x.Description,
                        FileId      = x.FileId,
                        Subject     = x.Subject,
                        DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                        FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileTypeId).FirstOrDefault().Description,
                        UserID      = x.UserID
                    }).ToList();

                    rd.docIncomingList = db.DocumentMovements
                                         .Where(x => (DbFunctions.TruncateTime(x.DateCreated) <= dateFrom && DbFunctions.TruncateTime(x.DateCreated) >= dateTo) && (x.Type == Movement.Incoming) && (x.Destination == unit.ToString()))
                                         .Select(x => new RD
                    {
                        Description = x.Description,
                        FileId      = x.PrefID,
                        Subject     = x.Subject,
                        DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                        FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileType).FirstOrDefault().Description,
                        Destination = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Destination)).FirstOrDefault().Description,
                        Source      = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Source)).FirstOrDefault().Description
                    }).ToList();

                    rd.docOutgoingList = db.DocumentMovements
                                         .Where(x => (DbFunctions.TruncateTime(x.DateCreated) <= dateFrom && DbFunctions.TruncateTime(x.DateCreated) >= dateTo) && (x.Type == Movement.Outgoing) && (x.Source == unit.ToString()))
                                         .Select(x => new RD
                    {
                        Description = x.Description,
                        FileId      = x.PrefID,
                        Subject     = x.Subject,
                        DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                        FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileType).FirstOrDefault().Description,
                        Source      = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Source)).FirstOrDefault().Description,
                        Destination = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Destination)).FirstOrDefault().Description,
                    }).ToList();
                }
                else if (report.Option == ReportOption.Year)
                {
                    rd.docCreated  = db.Documents.Where(x => x.DateCreated.Value.Year.ToString() == report.Year && (x.UnitId == unit)).Count();
                    rd.docIncoming = db.DocumentMovements.Where(x => x.DateCreated.Value.Year.ToString() == report.Year && (x.Type == Movement.Incoming) && (x.Destination == unit.ToString())).Count();
                    rd.docOutgoing = db.DocumentMovements.Where(x => x.DateCreated.Value.Year.ToString() == report.Year && (x.Type == Movement.Outgoing) && (x.Source == unit.ToString())).Count();

                    rd.docCreatedList = db.Documents
                                        .Where(x => x.DateCreated.Value.Year.ToString() == report.Year && (x.UnitId == unit))
                                        .Select(x => new DocDetails
                    {
                        Description = x.Description,
                        FileId      = x.FileId,
                        Subject     = x.Subject,
                        DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                        FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileTypeId).FirstOrDefault().Description,
                        UserID      = x.UserID
                    }).ToList();

                    rd.docIncomingList = db.DocumentMovements
                                         .Where(x => x.DateCreated.Value.Year.ToString() == report.Year && (x.Type == Movement.Incoming) && (x.Destination == unit.ToString()))
                                         .Select(x => new RD
                    {
                        Description = x.Description,
                        FileId      = x.PrefID,
                        Subject     = x.Subject,
                        DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                        FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileType).FirstOrDefault().Description,
                        Destination = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Destination)).FirstOrDefault().Description,
                        Source      = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Source)).FirstOrDefault().Description
                    }).ToList();

                    rd.docOutgoingList = db.DocumentMovements
                                         .Where(x => x.DateCreated.Value.Year.ToString() == report.Year && (x.Type == Movement.Outgoing) && (x.Source == unit.ToString()))
                                         .Select(x => new RD
                    {
                        Description = x.Description,
                        FileId      = x.PrefID,
                        Subject     = x.Subject,
                        DateCreated = DbFunctions.TruncateTime(x.DateCreated).ToString(),
                        FileType    = db.FileTypes.Where(d => d.FileTypeId == x.FileType).FirstOrDefault().Description,
                        Source      = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Source)).FirstOrDefault().Description,
                        Destination = db.Units.Where(g => g.UnitId == Convert.ToInt32(x.Destination)).FirstOrDefault().Description,
                    }).ToList();
                }
            }

            if (report.Unit == null)
            {
                rd.Unit = "All";
            }
            else
            {
                rd.Unit = MiscClass.getUnitReports(Convert.ToInt32(report.Unit));
            }
            return(Json(rd, JsonRequestBehavior.AllowGet));
        }