public bool ExportReportProductionDaiLy(PeriodProduction period, string Pathsave)
        {
            try
            {
                DefectRateReport defectRateReport = new DefectRateReport();

                List <DefectRateData> defectRateDatas = new List <DefectRateData>();
                defectRateDatas = defectRateReport.GetListDefectRateReportAmountOfTimeDaily("B01", "0010", period);

                if (defectRateDatas.Count == 0)
                {
                    return(false);
                }
                Class.ToolSupport exportExcel = new Class.ToolSupport();
                return(true);
            }
            catch (Exception ex)
            {
                SystemLog.Output(SystemLog.MSG_TYPE.Err, "ExportReportProductionDaiLy()", ex.Message);
                return(false);
            }
        }
        public static void ReturnDateTimePeriodProduction(PeriodProduction period, ref DateTime dateFrom, ref DateTime dateTo)
        {
            DateTime from = new DateTime();
            DateTime to   = new DateTime();

            if (period == PeriodProduction.dayshift)
            {
                from = DateTime.Now.Date + new TimeSpan(8, 0, 0);
                to   = DateTime.Now.Date + new TimeSpan(20, 0, 0);
            }
            else if (period == PeriodProduction.nightshift)
            {
                from = DateTime.Now.Date.AddDays(-1) + new TimeSpan(20, 0, 0);
                to   = DateTime.Now.Date + new TimeSpan(8, 0, 0);
            }
            else if (period == PeriodProduction.AllDay)
            {
                from = DateTime.Now.Date.AddDays(-1) + new TimeSpan(8, 0, 0);
                to   = DateTime.Now.Date + new TimeSpan(8, 0, 0);
            }
            dateFrom = from; dateTo = to;
        }
Beispiel #3
0
        public bool ExportReportProductionDaiLy(PeriodProduction period)
        {
            try
            {
                DefectRateReport defectRateReport = new DefectRateReport();

                List <DefectRateData> defectRateDatas = new List <DefectRateData>();
                defectRateDatas = defectRateReport.GetListDefectRateReportAmountOfTimeDaily("B01", "0010", period);

                if (defectRateDatas.Count == 0)
                {
                    return(false);
                }
                Log.ExportExcelTool exportExcel = new Log.ExportExcelTool();
                exportExcel.ExportToTemplateMQCDefectDaily(pathDaily, @"C:\ERP_Temp\MQC_Daily_Report" + "-" + DateTime.Now.ToString("yyyyMMdd hhmmss") + ".xlsx", defectRateDatas);
                return(true);
            }
            catch (Exception ex)
            {
                Logfile.Output(StatusLog.Error, "ExportReportProductionDaiLy()", ex.Message);
                return(false);
            }
        }
Beispiel #4
0
        private bool SendEmailStatus(List <ScheduleReportItems> listReport)
        {
            foreach (var item in listReport)
            {
                if (item.ReportType == "Daily")
                {
                    if (DateTime.Now.Hour == int.Parse(item.Hours) && DateTime.Now.Minute == int.Parse(item.Minutes))
                    {
                        List <EmailNeedSend> emailNeeds = new List <EmailNeedSend>();
                        emailNeeds = EmailNeedSends(item.ReportName);
                        if (CheckIsSentMailComplete(item) == false)
                        {
                            if (emailNeeds != null && emailNeeds.Count > 0)
                            {
                                if (item.ReportName == "BackLogReport")
                                {
                                    SendMailFunction sendmail = new SendMailFunction();
                                    var isOK = sendmail.SendMailwithExportExcelbyCompanyMail(item, emailNeeds, ref dgv_export, item.AttachedFolder, version);

                                    if (isOK)
                                    {
                                        InsertSendMailtoRecord(item, item.AttachedFolder);
                                        isExportExcel = false;
                                    }
                                }
                                else if (item.ReportName == "MQC_Daily")
                                {
                                    SendMailFunction sendmail = new SendMailFunction();
                                    PeriodProduction period   = new PeriodProduction();
                                    if (int.Parse(item.Hours) == 8)
                                    {
                                        period = PeriodProduction.AllDay;
                                    }
                                    else if (int.Parse(item.Hours) == 20)
                                    {
                                        period = PeriodProduction.dayshift;
                                    }
                                    else if (int.Parse(item.Hours) < 8)
                                    {
                                        period = PeriodProduction.nightshift;
                                    }
                                    else if (int.Parse(item.Hours) > 8 && int.Parse(item.Hours) < 20)
                                    {
                                        period = PeriodProduction.dayshift;
                                    }

                                    if (sendmail.SendMailwithExportExceMQCbyCompanyMail(period, item, emailNeeds))
                                    {
                                        InsertSendMailtoRecord(item, item.AttachedFolder);
                                        isExportExcel = false;
                                    }
                                }
                            }
                        }
                    }
                }
                else if (item.ReportType == "Weekly")
                {
                    if (DateTime.Now.DayOfWeek.ToString() == item.Day && DateTime.Now.Hour == int.Parse(item.Hours) && DateTime.Now.Minute == int.Parse(item.Minutes))
                    {
                        List <EmailNeedSend> emailNeeds = new List <EmailNeedSend>();
                        emailNeeds = EmailNeedSends(item.ReportName);
                        if (CheckIsSentMailComplete(item) == false)
                        {
                            if (emailNeeds != null && emailNeeds.Count > 0)
                            {
                                SendMailFunction sendmail = new SendMailFunction();
                                if (sendmail.SendMailtoReportByCompanyMail(item, emailNeeds))
                                {
                                    InsertSendMailtoRecord(item, item.AttachedFolder);
                                }
                            }
                        }
                    }
                }
                else if (item.ReportType == "Monthly")
                {
                    if (DateTime.Now.Date.ToString() == item.Date && DateTime.Now.Hour == int.Parse(item.Hours) && DateTime.Now.Minute == int.Parse(item.Minutes))
                    {
                        List <EmailNeedSend> emailNeeds = new List <EmailNeedSend>();
                        emailNeeds = EmailNeedSends(item.ReportName);
                        if (CheckIsSentMailComplete(item) == false)
                        {
                            if (emailNeeds != null && emailNeeds.Count > 0)
                            {
                                SendMailFunction sendmail = new SendMailFunction();
                                if (sendmail.SendMailtoReportByCompanyMail(item, emailNeeds))
                                {
                                    InsertSendMailtoRecord(item, item.AttachedFolder);
                                }
                            }
                        }
                    }
                }
                else if (item.ReportType == "Yearly")
                {
                    if (DateTime.Now.ToString("MMMM") == item.Month && DateTime.Now.Date.ToString() == item.Date && DateTime.Now.Hour == int.Parse(item.Hours) && DateTime.Now.Minute == int.Parse(item.Minutes))
                    {
                        List <EmailNeedSend> emailNeeds = new List <EmailNeedSend>();
                        emailNeeds = EmailNeedSends(item.ReportName);
                        if (CheckIsSentMailComplete(item) == false)
                        {
                            if (emailNeeds != null && emailNeeds.Count > 0)
                            {
                                SendMailFunction sendmail = new SendMailFunction();
                                if (sendmail.SendMailtoReportByCompanyMail(item, emailNeeds))
                                {
                                    InsertSendMailtoRecord(item, item.AttachedFolder);
                                }
                            }
                        }
                    }
                }
            }
            return(false);
        }
        public List <MQCItemSummary> GetMQCItemSummaries(PeriodProduction period, string site, string process)
        {
            DateTime from = new DateTime(); DateTime to = new DateTime();

            DateTimeControl.ReturnDateTimePeriodProduction(period, ref from, ref to);
            string date = from.ToString("yyyy-MM-dd");
            string time = from.ToString("HH:mm:ss");
            List <MQCItemSummary> qCItemSummaries = new List <MQCItemSummary>();

            try
            {
                LoadDataMQC         dataMQC      = new LoadDataMQC();
                List <MQCDataItems> mQCDataItems = dataMQC.listMQCDataItemsbySite(from, to, site, process);
                //Nhom theo san pham
                var ListMQCbyProduct = mQCDataItems
                                       .GroupBy(u => u.lot)
                                       .Select(grp => grp.ToList())
                                       .ToList();
                foreach (var qCDataItems in ListMQCbyProduct)
                {
                    MQCItemSummary itemSummary = new MQCItemSummary();
                    itemSummary.product     = qCDataItems[0].model;
                    itemSummary.defectItems = new List <DefectItem>();
                    var ListItemsData = qCDataItems
                                        .GroupBy(u => u.item)
                                        .Select(grp => grp.ToList())
                                        .ToList();

                    var ListItemsDate = qCDataItems
                                        .GroupBy(u => u.inspectdate)
                                        .ToList();
                    foreach (var itemDate in ListItemsDate)
                    {
                        var ListItemsTime = qCDataItems
                                            .GroupBy(u => u.inspecttime)
                                            .ToList();
                        if (ListItemsDate.Count() == 1)
                        {
                            itemSummary.Time_from = "[" + ListItemsDate[0].Key.ToString("dd-MM-yy") + "] " + ListItemsTime.Min(d => d.Key).ToString();
                            itemSummary.Time_To   = "[" + ListItemsDate[0].Key.ToString("dd-MM-yy") + "] " + ListItemsTime.Max(d => d.Key).ToString();
                        }
                        else if (ListItemsDate.Count() == 2)
                        {
                            itemSummary.Time_from = "[" + ListItemsDate[0].Key.ToString("dd-MM-yy") + "] " + ListItemsTime.Min(d => d.Key).ToString();
                            itemSummary.Time_To   = "[" + ListItemsDate[1].Key.ToString("dd-MM-yy") + "] " + ListItemsTime.Max(d => d.Key).ToString();
                        }
                    }
                    //Khi thay doi ngay can phai chinh lai thoi gian


                    foreach (var itemData in ListItemsData)
                    {
                        DefectItem item = new DefectItem();
                        item.DefectCode = itemData[0].item;
                        itemSummary.Lot = itemData[0].lot;
                        item.Quantity   = itemData.Select(d => d.data).Sum();

                        if (itemData[0].remark == "OP")
                        {
                            itemSummary.OutputQty += item.Quantity;
                        }
                        else if (itemData[0].remark == "NG")
                        {
                            LoadDefectMapping defectMapping  = new LoadDefectMapping();
                            NGItemsMapping    nGItemsMapping = defectMapping.GetNGMapping(site, process, item.DefectCode);
                            item.DefectSFT     = nGItemsMapping.NGCode_SFT;
                            item.DefectSFTName = nGItemsMapping.NGCodeName_SFT;
                            itemSummary.defectItems.Add(item);
                            itemSummary.NGQty += item.Quantity;
                        }
                    }
                    itemSummary.QuantityTotal = itemSummary.OutputQty + itemSummary.NGQty;
                    itemSummary.DefectRate    = (itemSummary.QuantityTotal != 0) ? (itemSummary.NGQty / itemSummary.QuantityTotal) : 0;
                    qCItemSummaries.Add(itemSummary);
                }
            }
            catch (Exception ex)
            {
                Log.Logfile.Output(Log.StatusLog.Error, "GetMQCItemSummaries(DateTime from, DateTime to, string site, string process)", ex.Message);
            }
            return(qCItemSummaries);
        }
        public List <DefectRateData> GetListDefectRateReportAmountOfTimeDaily(string Dept, string codeProcess, PeriodProduction period)
        {
            List <DefectRateData> defectRates = new List <DefectRateData>();

            try
            {
                LoadDataSummary       loadData     = new LoadDataSummary();
                List <MQCItemSummary> ListmQCItems = loadData.GetMQCItemSummaries(period, Dept, "MQC");
                foreach (var mQCItems in ListmQCItems)
                {
                    DefectRateData defectRate = new DefectRateData();
                    defectRate.Lot            = mQCItems.Lot;
                    defectRate.Line           = mQCItems.Line;
                    defectRate.Product        = mQCItems.product;
                    defectRate.DateTime_from  = mQCItems.Time_from;
                    defectRate.DateTime_to    = mQCItems.Time_To;
                    defectRate.TotalQuantity  = mQCItems.QuantityTotal;
                    defectRate.ReworkQuantity = mQCItems.ReworkQty;
                    defectRate.ReworkRate     = mQCItems.ReworkRate;

                    defectRate.DefectQuantity = mQCItems.NGQty;
                    defectRate.OutputQuantity = mQCItems.OutputQty;
                    defectRate.DefectRate     = (defectRate.TotalQuantity != 0) ? (defectRate.DefectQuantity / defectRate.TotalQuantity) : 0;
                    LoadDefectMapping     loadDefectTop13 = new LoadDefectMapping();
                    List <NGItemsMapping> listTop13       = loadDefectTop13.listNGMappingGetReportTop13(Dept, "MQC");
                    List <DefectItem>     listDefectTop13 = new List <DefectItem>();
                    for (int i = 0; i < listTop13.Count; i++)
                    {
                        var getlist = mQCItems.defectItems.Where(d => d.DefectSFT == listTop13[i].NGCode_SFT).ToList();

                        DefectItem defect = new DefectItem();
                        if (getlist != null && getlist.Count > 0)
                        {
                            defect          = getlist[0];
                            defect.Quantity = getlist.Select(s => s.Quantity).Sum();
                        }
                        defect.Note = listTop13[i].Note;
                        listDefectTop13.Add(defect);
                    }
                    var listDefectTop13Groupby = listDefectTop13.OrderBy(d => d.Note).ToList();
                    defectRate.defectItems = listDefectTop13Groupby;
                    DateTime dateTarget = DateTime.Now.Date;
                    if (period == PeriodProduction.AllDay)
                    {
                        dateTarget = DateTime.Now.Date.AddDays(-1);
                    }
                    else if (period == PeriodProduction.dayshift)
                    {
                        dateTarget = DateTime.Now.Date;
                    }
                    else if (period == PeriodProduction.nightshift)
                    {
                        dateTarget = DateTime.Now.Date.AddDays(-1);
                    }
                    defectRate.TargetMQC = new TargetMQC();
                    LoadTargetProduction loadTarget = new LoadTargetProduction();
                    defectRate.TargetMQC = loadTarget.GetTargetMQC(defectRate.Product, dateTarget.ToString("yyyyMMdd"));
                    defectRates.Add(defectRate);
                }
            }
            catch (Exception ex)
            {
                SystemLog.Output(SystemLog.MSG_TYPE.Err, "GetDefectRateReport(DateTime from, DateTime to, string Dept, string codeProcess)", ex.Message);
            }
            return(defectRates);
        }
        public List <DefectRateData> GetListDefectRateReportAmountOfTimeDaily(string Dept, string codeProcess, PeriodProduction period)
        {
            List <DefectRateData> defectRates = new List <DefectRateData>();

            try
            {
                //code lay tren ERP va SFT
                //     StringBuilder sql = new StringBuilder();
                //     sql.Append("select sum(TA011) as outputQty, sum(TA012) as DefectQTy, sum(TA011)+ sum(TA012) as TotalQty ");
                //     sql.Append("from SFCTA ");
                //     sql.Append("where 1=1 ");
                //     sql.Append("and TA004 = '" + Dept + "'");
                //     sql.Append("and TA003 = '" + codeProcess + "'");
                //     sql.Append("and CREATE_DATE >= '" + from.ToString("yyyyMMdd") + "'");
                //     sql.Append("and CREATE_DATE <= '" + to.ToString("yyyyMMdd") + "'");
                //     sqlERPCON sqlERPCON = new sqlERPCON();
                //     DataTable dt = new DataTable();
                //     sqlERPCON.sqlDataAdapterFillDatatable(sql.ToString(), ref dt);

                //var     defectItems = (from DataRow dr in dt.Rows
                //                        select new DefectRateData()
                //                        {
                //                           TotalQuantity  =double.Parse( dr["TotalQty"].ToString()),
                //                            DefectQuantity = double.Parse( dr["DefectQTy"].ToString()),
                //                            OutputQuantity = double.Parse(dr["outputQty"].ToString())

                //                        }).ToList();

                //     defectRate = defectItems[0];
                //     defectRate.DateTime_from = from;
                //     defectRate.DateTime_to = to;
                //     defectRate.DefectRate = (defectRate.TotalQuantity != 0) ? (defectRate.DefectQuantity / defectRate.TotalQuantity) : 0;


                LoadDataSummary       loadData     = new LoadDataSummary();
                List <MQCItemSummary> ListmQCItems = loadData.GetMQCItemSummaries(period, Dept, "MQC");
                foreach (var mQCItems in ListmQCItems)
                {
                    DefectRateData defectRate = new DefectRateData();
                    defectRate.Lot            = mQCItems.Lot;
                    defectRate.Product        = mQCItems.product;
                    defectRate.DateTime_from  = mQCItems.Time_from;
                    defectRate.DateTime_to    = mQCItems.Time_To;
                    defectRate.TotalQuantity  = mQCItems.QuantityTotal;
                    defectRate.DefectQuantity = mQCItems.NGQty;
                    defectRate.OutputQuantity = mQCItems.OutputQty;
                    defectRate.DefectRate     = (defectRate.TotalQuantity != 0) ? (defectRate.DefectQuantity / defectRate.TotalQuantity) : 0;
                    LoadDefectMapping     loadDefectTop13 = new LoadDefectMapping();
                    List <NGItemsMapping> listTop13       = loadDefectTop13.listNGMappingGetReportTop13(Dept, "MQC");
                    List <DefectItem>     listDefectTop13 = new List <DefectItem>();
                    for (int i = 0; i < listTop13.Count; i++)
                    {
                        var getlist = mQCItems.defectItems.Where(d => d.DefectSFT == listTop13[i].NGCode_SFT).ToList();

                        DefectItem defect = new DefectItem();
                        if (getlist != null && getlist.Count > 0)
                        {
                            defect          = getlist[0];
                            defect.Quantity = getlist.Select(s => s.Quantity).Sum();
                        }
                        defect.Note = listTop13[i].Note;
                        listDefectTop13.Add(defect);
                    }
                    var listDefectTop13Groupby = listDefectTop13.OrderBy(d => d.Note).ToList();
                    defectRate.defectItems = listDefectTop13Groupby;
                    DateTime dateTarget = DateTime.Now.Date;
                    if (period == PeriodProduction.AllDay)
                    {
                        dateTarget = DateTime.Now.Date.AddDays(-1);
                    }
                    else if (period == PeriodProduction.dayshift)
                    {
                        dateTarget = DateTime.Now.Date;
                    }
                    else if (period == PeriodProduction.nightshift)
                    {
                        dateTarget = DateTime.Now.Date.AddDays(-1);
                    }
                    defectRate.TargetMQC = new TargetMQC();
                    LoadTargetProduction loadTarget = new LoadTargetProduction();
                    defectRate.TargetMQC = loadTarget.GetTargetMQC(defectRate.Product, dateTarget.ToString("yyyyMMdd"));
                    defectRates.Add(defectRate);
                }
            }
            catch (Exception ex)
            {
                Log.Logfile.Output(Log.StatusLog.Error, "GetDefectRateReport(DateTime from, DateTime to, string Dept, string codeProcess)", ex.Message);
            }
            return(defectRates);
        }
        public List <MQCItemSummary> GetMQCItemSummaries(PeriodProduction period, string site, string process)
        {
            DateTime from = new DateTime(); DateTime to = new DateTime();

            DateTimeControl.ReturnDateTimePeriodProduction(period, ref from, ref to);

            List <MQCItemSummary> qCItemSummaries = new List <MQCItemSummary>();

            try
            {
                LoadDataMQC         dataMQC      = new LoadDataMQC();
                List <MQCDataItems> mQCDataItems = dataMQC.listMQCDataItemsbySite(from, to, site, process);
                //Nhom theo san pham
                var ListMQCbyProduct = mQCDataItems
                                       .OrderBy(d => d.line)
                                       .GroupBy(u => u.lot)
                                       .Select(grp => grp.ToList())
                                       .ToList();
                foreach (var qCDataItems in ListMQCbyProduct)
                {
                    MQCItemSummary itemSummary = new MQCItemSummary();
                    itemSummary.product     = qCDataItems[0].model;
                    itemSummary.defectItems = new List <DefectItem>();
                    var ListItemsData = qCDataItems
                                        .GroupBy(u => u.item)
                                        .Select(grp => grp.ToList())
                                        .ToList();

                    itemSummary.Time_from = dataMQC.GetMinTimeProductionOfProduct(itemSummary.product, from, to).Substring(0, 16);
                    itemSummary.Time_To   = dataMQC.GetMaxTimeProductionOfProduct(itemSummary.product, from, to).Substring(0, 16);
                    //Khi thay doi ngay can phai chinh lai thoi gian

                    foreach (var itemData in ListItemsData)
                    {
                        itemSummary.product = itemData[0].model;
                        itemSummary.Line    = itemData[0].line;
                        itemSummary.Lot     = itemData[0].lot;

                        if (itemData[0].remark == "OP")
                        {
                            itemSummary.OutputQty = itemData.Select(d => d.data).Sum();
                        }
                        else if (itemData[0].remark == "NG")
                        {
                            DefectItem item = new DefectItem();
                            item.DefectCode = itemData[0].item;
                            item.Quantity   = itemData.Select(d => d.data).Sum();
                            LoadDefectMapping defectMapping  = new LoadDefectMapping();
                            NGItemsMapping    nGItemsMapping = defectMapping.GetNGMapping(site, process, item.DefectCode);
                            item.DefectSFT     = nGItemsMapping.NGCode_SFT;
                            item.DefectSFTName = nGItemsMapping.NGCodeName_SFT;
                            itemSummary.defectItems.Add(item);
                            itemSummary.NGQty += item.Quantity;
                        }
                        else if (itemData[0].remark == "RW")
                        {
                            DefectItem item = new DefectItem();
                            item.DefectCode = itemData[0].item;
                            item.Quantity   = itemData.Select(d => d.data).Sum();

                            itemSummary.ReworkQty += item.Quantity;
                        }
                    }
                    itemSummary.QuantityTotal = itemSummary.OutputQty + itemSummary.NGQty /*+ itemSummary.ReworkQty*/;
                    itemSummary.DefectRate    = (itemSummary.QuantityTotal != 0) ? (itemSummary.NGQty / itemSummary.QuantityTotal) : 0;
                    itemSummary.ReworkRate    = (itemSummary.QuantityTotal != 0) ? (itemSummary.ReworkQty / itemSummary.QuantityTotal) : 0;
                    qCItemSummaries.Add(itemSummary);
                }
            }
            catch (Exception ex)
            {
                SystemLog.Output(SystemLog.MSG_TYPE.Err, "GetMQCItemSummaries(DateTime from, DateTime to, string site, string process)", ex.Message);
            }
            return(qCItemSummaries);
        }
        public bool SendMailwithExportExceMQCbyCompanyMail(PeriodProduction period, ScheduleReportItems items, List <EmailNeedSend> emailNeedSends)
        {
            try
            {
                MQC.MQCReport mQCReport = new MQC.MQCReport();

                if (mQCReport.ExportReportProductionDaiLy(period))
                {
                    Log.Logfile.Output(Log.StatusLog.Normal, "Export MQC report to excel sucessfull");
                }
                else // return false de khoi gui mail
                {
                    Log.Logfile.Output(Log.StatusLog.Normal, "Export MQC report to excel fail");
                    return(false);
                }
            }
            catch (Exception ex)
            {
                Log.Logfile.Output(Log.StatusLog.Error, "Export MQC report to excel fail!", ex.Message);
            }
            try
            {
                if (emailNeedSends.Count > 0)
                {
                    MailMessage mail = new MailMessage();
                    if (items.IsBodyHTML)
                    {
                        mail.IsBodyHtml = true;
                    }
                    else
                    {
                        mail.IsBodyHtml = false;
                    }
                    SmtpClient SmtpServer = new SmtpClient("103.18.179.112", 25);
                    mail.From = new MailAddress("*****@*****.**");
                    //  mail.To.Add("*****@*****.**");
                    foreach (var email in emailNeedSends)
                    {
                        mail.To.Add(email.EmailReceive);
                    }
                    mail.Subject = items.Subject + " On " + DateTime.Now.ToString("MMM-dd-yyyy");

                    if (items.IsBodyHTML)
                    {
                        string pathTemplate = Environment.CurrentDirectory + @"\Resources\EmailTemplate.html";
                        if (File.Exists(pathTemplate))
                        {
                            string html         = File.ReadAllText(pathTemplate);
                            string htmlReplaced = "";
                            htmlReplaced = html.Replace("@Replace1", items.Subject);
                            htmlReplaced = htmlReplaced.Replace("@Replace2", DateTime.Now.ToString("MMM-dd-yyyy"));
                            mail.Body    = htmlReplaced;
                        }
                    }
                    else
                    {
                        mail.Body = items.Contents;
                    }

                    List <string> listfileattached = new List <string>();
                    if (items.AttachedFolder != "" && items.AttachedFolder != null)
                    {
                        DirectoryInfo d     = new DirectoryInfo(items.AttachedFolder); //Assuming Test is your Folder
                        FileInfo[]    Files = d.GetFiles();                            //Getting excel files

                        foreach (FileInfo file in Files)
                        {
                            System.Net.Mail.Attachment attachment;

                            if (file.Name.Contains(items.ReportName))
                            {
                                attachment = new System.Net.Mail.Attachment(file.FullName);
                                mail.Attachments.Add(attachment);
                                listfileattached.Add(file.FullName);

                                SmtpServer.Port        = 25;
                                SmtpServer.Credentials = new System.Net.NetworkCredential("*****@*****.**", "techlink@123");
                                //  SmtpServer.EnableSsl = true;  // dung email cong ty thi bo dong nay
                                SmtpServer.Send(mail);
                            }
                            else
                            {
                                return(false);
                            }
                        }
                    }

                    mail.Dispose();
                    SmtpServer.Dispose();
                    try
                    {
                        foreach (var item in listfileattached)
                        {
                            if (File.Exists(item))
                            {
                                File.Delete(item);//Xoa file after send file
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Log.Logfile.Output(Log.StatusLog.Error, "Delete file attached fail :", ex.Message);
                    }
                    Log.Logfile.Output(Log.StatusLog.Normal, "Send mail suscess :", items.ReportName + "|" + items.ReportType + "|" + items.Subject);

                    return(true);
                }
            }
            catch (Exception ex)
            {
                Log.Logfile.Output(Log.StatusLog.Error, "Send mail fail :", ex.Message);
            }


            return(true);
        }