Example #1
0
        private Leave ExtractMsgFile(string UploadedFile)
        {
            string ExtractedFolder = Server.MapPath("~/Temp/" + Guid.NewGuid().ToString() + "/");

            if (!Directory.Exists(ExtractedFolder))
            {
                Directory.CreateDirectory(ExtractedFolder);
            }

            MsgReader.Reader reader = new MsgReader.Reader();
            reader.ExtractToFolder(UploadedFile, ExtractedFolder, false);

            string[] ExtractedFiles = Directory.GetFiles(ExtractedFolder, "*.htm");

            Leave leave = new Leave();

            if (System.IO.File.Exists(ExtractedFiles[0]))
            {
                string MsgContent = System.IO.File.ReadAllText(ExtractedFiles[0]);

                string BreakTag = "<br/>";

                string FromTag = "From:</td><td>";
                string From = MsgContent.Substring(MsgContent.IndexOf(FromTag) + FromTag.Length);
                From = From.Substring(From.IndexOf("&nbsp&lt;") + "&nbsp&lt;".Length);
                From = From.Substring(0, From.IndexOf("&gt;"));

                if (From.ToLower().Contains("cn=recipients"))
                {
                    var emailList = db.Employees.Select(e => e.Email);
                    foreach (var email in emailList)
                    {
                        if (From.ToLower().Contains(email))
                        {
                            From = email;
                            break;
                        }
                    }
                }

                string SentOnTag = "Sent on:</td><td>";
                string SentOn = MsgContent.Substring(MsgContent.IndexOf(SentOnTag) + SentOnTag.Length);
                SentOn = SentOn.Substring(0, SentOn.IndexOf(BreakTag));

                string SubjectTag = "Subject:</td><td>";
                string Subject = MsgContent.Substring(MsgContent.IndexOf(SubjectTag) + SubjectTag.Length);
                Subject = Subject.Substring(0, Subject.IndexOf(BreakTag));

                ViewBag.From = From;
                ViewBag.SentOn = SentOn;
                ViewBag.Subject = Subject;

                leave.LeaveDate = Convert.ToDateTime(SentOn);

                leave.EmployeeID = db.Employees
                                    .Where(x => x.Email == From)
                                    .Select(y => y.ID).FirstOrDefault();

                Directory.Delete(ExtractedFolder, true);
                System.IO.File.Delete(UploadedFile);
            }

            LoadDdlEmployees(leave.EmployeeID);
            LoadDdlLTypes();
            LoadDdlReasons();

            return leave;
        }