Example #1
0
        public void Update(tblSchedule schedule)
        {
            var found = repos.Find(schedule.Id);

            found = schedule;
            repos.Update(found);
        }
        //todo use it in GenerateSchedule
        public tblSchedule GenerateSingleSchedule(Line line, DateTime date, bool AddLeaveTime, bool AddArriveTime)
        {
            var item = new tblSchedule {
                Date      = date,
                Direction = line.Direction,
                LineId    = line.Id,
                BusId     = line.BusesToLines.DefaultIfEmpty(new BusesToLine()).First().BusId,
                Line      = line,
                Bus       = line.BusesToLines.DefaultIfEmpty(new BusesToLine()).First().Bus
            };

            var leaveTime = GetLeaveTime(line, date);

            if (leaveTime.HasValue)
            {
                if (AddLeaveTime)
                {
                    item.leaveTime = leaveTime;
                }
                if (AddArriveTime && line.Duration.HasValue)
                {
                    item.arriveTime = leaveTime.Value.Add(line.Duration.Value);
                }
            }
            return(item);
        }
 public ScheduleItemModel(tblSchedule data)
 {
     Id                  = data.Id;
     Date                = DateHelper.DateToString(data.Date);
     Direction           = (LineDirection?)data.Direction;
     DriverId            = data.DriverId;
     BusId               = data.BusId;
     leaveTime           = DateHelper.TimeToString(data.leaveTime);
     arriveTime          = DateHelper.TimeToString(data.arriveTime);
     LineId              = data.LineId;
     LineIdDescription   = GetLineIdDescription(data.Line);
     DriverIdDescription = data.Driver != null ? data.Driver.FirstName + " " + data.Driver.LastName : string.Empty;
     BusIdDescription    = GetBusIdDescription(data.Bus);
 }
        public ActionResult Load(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                return(View("Edit", model));
            }

            model.ViewStatus         = "E";
            model.originScheduleName = id;
            model.UserID             = userInfo.Account;

            using (tblScheduleRepository rep = new tblScheduleRepository())
            {
                tblSchedule s = rep.get(id);
                model.ScheduleName = s.ScheduleName;
                model.ModeType     = s.ModeType;
                model.Format       = s.Format;
                model.CustomerName = s.CustomerName;
                model.SettingName  = s.SettingName;
                model.Destination  = s.Destination;
                model.Path         = s.Path;
                model.Email        = s.Email;
                model.FTPServer    = s.FTPServer;
                model.FTPAccount   = s.FTPAccount;
                model.FTPPassword  = s.FTPPassword;
                model.WorkType     = s.WorkType;
                model.Month        = s.Month;
                model.Date         = s.Date;
                model.Day          = s.Day;
                model.Hour         = s.Hour;
                model.Min          = s.Min;
                model.Active       = s.Active;
            }

            return(View("Edit", model));
        }
        public ActionResult Save(ScheduleVM vm, string[] Destinations)
        {
            if (string.IsNullOrEmpty(vm.ScheduleName))
            {
                vm.SaveResult += "請輸入 Schedule Name!<br />";
            }
            if (string.IsNullOrEmpty(vm.ModeType))
            {
                vm.SaveResult += "請選擇 Mode Type!<br />";
            }
            if (string.IsNullOrEmpty(vm.CustomerName))
            {
                vm.SaveResult += "請輸入 Customer Name!<br />";
            }
            if (string.IsNullOrEmpty(vm.Format))
            {
                vm.SaveResult += "請選擇 Format!<br />";
            }
            if (string.IsNullOrEmpty(vm.SettingName))
            {
                vm.SaveResult += "請選擇 Setting Name!<br />";
            }
            if (string.IsNullOrEmpty(vm.WorkType))
            {
                vm.SaveResult += "請選擇 Work Type!<br />";
            }

            // DATE
            if (vm.WorkType.Equals("1"))
            {
                if (string.IsNullOrEmpty(vm.Date))
                {
                    vm.SaveResult += "請輸入 Date!<br />";
                }
                // check Month
                if (!string.IsNullOrEmpty(vm.Month) && !Func.IsNumeric(vm.Month, ",", 1, 12))
                {
                    vm.SaveResult += "請檢查 Month 是否正確(超出範圍 1-12)!<br />";
                }
                // check Date
                if (!string.IsNullOrEmpty(vm.Date) && !Func.IsNumeric(vm.Date, ",", 1, 31))
                {
                    vm.SaveResult += "請檢查 Date 是否正確(超出範圍 1-31)!<br />";
                }
            }
            // DAY
            else if (vm.WorkType.Equals("2"))
            {
                if (string.IsNullOrEmpty(vm.Min))
                {
                    vm.SaveResult += "請輸入 Min!<br />";
                }
                // check Day
                if (!string.IsNullOrEmpty(vm.Day) && !Func.IsNumeric(vm.Day, ",", 1, 7))
                {
                    vm.SaveResult += "請檢查 Day 是否正確(超出範圍 1-7)!<br />";
                }
                // check Hour
                if (!string.IsNullOrEmpty(vm.Hour) && !Func.IsNumeric(vm.Hour, ",", 0, 23))
                {
                    vm.SaveResult += "請檢查 Hour 是否正確(超出範圍 0-23)!<br />";
                }
                // check Min
                if (!string.IsNullOrEmpty(vm.Min) && !Func.IsNumeric(vm.Min, ",", 0, 59))
                {
                    vm.SaveResult += "請檢查 Min 是否正確(超出範圍 0-59)!<br />";
                }
            }

            if (Destinations == null || Destinations.Length == 0)
            {
                if (vm.ModeType.Equals("EXPORT"))
                {
                    vm.SaveResult += "請至少選擇一項 Destination!<br />";
                }
                else if (vm.ModeType.Equals("IMPORT"))
                {
                    vm.SaveResult += "請選擇 Source!<br />";
                }
            }
            else
            {
                // Path
                if (Destinations.Contains("1") && string.IsNullOrEmpty(vm.Path))
                {
                    vm.SaveResult += "請輸入 Path!<br />";
                }
                // Email
                if (Destinations.Contains("2") && string.IsNullOrEmpty(vm.Email))
                {
                    vm.SaveResult += "請輸入 EMail!<BR />";
                }
                // FTP
                if (Destinations.Contains("3"))
                {
                    if (string.IsNullOrEmpty(vm.FTPServer))
                    {
                        vm.SaveResult += "請輸入 FTP Server!<br />";
                    }
                    if (string.IsNullOrEmpty(vm.FTPAccount))
                    {
                        vm.SaveResult += "請輸入 FTP Account!<br />";
                    }
                    if (string.IsNullOrEmpty(vm.FTPPassword))
                    {
                        vm.SaveResult += "請輸入 FTP Password!<br />";
                    }
                }
            }
            if (!string.IsNullOrEmpty(vm.SaveResult))
            {
                return(View("Edit", vm));
            }

            using (tblScheduleRepository rep = new tblScheduleRepository())
            {
                tblSchedule s = new tblSchedule()
                {
                    ScheduleName = vm.ScheduleName,
                    CustomerName = vm.CustomerName,
                    ModeType     = vm.ModeType,
                    Format       = vm.Format,
                    SettingName  = vm.SettingName,
                    Destination  = string.Join(",", Destinations),
                    WorkType     = vm.WorkType,
                    Active       = vm.Active
                };
                // DATE
                if (vm.WorkType.Equals("1"))
                {
                    s.Month = vm.Month;
                    s.Date  = vm.Date;
                }
                // DAY
                else if (vm.WorkType.Equals("2"))
                {
                    s.Day  = vm.Day;
                    s.Hour = vm.Hour;
                    s.Min  = vm.Min;
                }

                // Destination-PATH
                if (Destinations.Contains("1"))
                {
                    s.Path = vm.Path;
                }
                // Destination-EMAIL
                if (Destinations.Contains("2"))
                {
                    s.Email = vm.Email;
                }
                // Destination-FTP
                if (Destinations.Contains("3"))
                {
                    s.FTPAccount  = vm.FTPAccount;
                    s.FTPPassword = vm.FTPPassword;
                    s.FTPServer   = vm.FTPServer;
                }

                vm.SaveResult = rep.Save(vm.originScheduleName, s, userInfo.Account);
                if (vm.SaveResult.Equals("ok"))
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    return(View("Edit", vm));
                }
            }
        }
Example #6
0
 public void AddSchedule(tblSchedule schedule)
 {
     repos.Create(schedule);
 }
Example #7
0
        static void Generate(tblSchedule s)
        {
            string exeResult = string.Empty;
            string FileName  = string.Empty;

            try
            {
                string   SQLName      = string.Empty;
                string[] Destinations = s.Destination.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);

                #region XML
                if (s.Format.Equals("XML"))
                {
                    using (tblXMLSettingRepository rep = new tblXMLSettingRepository())
                        using (tblXMLMappingRepository map = new tblXMLMappingRepository())
                        {
                            tblXMLSetting setting = rep.get(s.SettingName);
                            if (setting != null)
                            {
                                SQLName  = setting.SQLName;
                                FileName = setting.FileName + ((string.IsNullOrEmpty(setting.FileNameDateFormat)) ? ".xml" : DateTime.Now.ToString(setting.FileNameDateFormat.Replace(",", "")) + ".xml");
                            }
                            List <tblXMLMapping> mapping = map.get(s.SettingName).ToList();
                            using (tblSQLSettingRepository set = new tblSQLSettingRepository())
                            {
                                tblSQLSetting sqlSetting = set.select(SQLName);
                                using (DataAccess da = new DataAccess())
                                {
                                    Tuple <bool, DataTable, string> result = da.TryExecuteDataTable(sqlSetting.SQLStatement, null, null);
                                    if (!result.Item1)
                                    {
                                        log.Save("轉出", "Schedule", s.CustomerName, s.Format, "", s.Email, s.FTPServer, FileName, "失敗", result.Item3);
                                    }

                                    XmlDocument       xmlDoc   = XmlProcess.GenerateXML(result.Item2, mapping);
                                    XmlWriterSettings settings = new XmlWriterSettings();
                                    settings.Indent              = true;
                                    settings.OmitXmlDeclaration  = false;
                                    settings.NewLineOnAttributes = true;
                                    settings.Encoding            = Encoding.GetEncoding("utf-8");

                                    // Path
                                    if (Destinations.Contains("1"))
                                    {
                                        try
                                        {
                                            using (Stream fs = File.Open(s.Path + "/" + FileName, FileMode.CreateNew))
                                            {
                                                XmlWriter writer = XmlWriter.Create(fs, settings);
                                                xmlDoc.WriteTo(writer); // Write to memorystream
                                                writer.Flush();
                                                fs.Close();
                                            }
                                            //xmlDoc.Save(s.Path + "/" + FileName);
                                        }
                                        catch (Exception ex)
                                        {
                                            exeResult = ex.Message.Replace("\r\n", "");
                                        }
                                        if (!string.IsNullOrEmpty(exeResult))
                                        {
                                            log.Save("轉出", "Schedule", s.CustomerName, s.Format, "PATH", s.Email, s.FTPServer, FileName, "失敗", exeResult);
                                        }
                                        else
                                        {
                                            log.Save("轉出", "Schedule", s.CustomerName, s.Format, "PATH", s.Email, s.FTPServer, FileName, "成功", "");
                                        }
                                    }

                                    if (Destinations.Contains("2") || Destinations.Contains("3"))
                                    {
                                        using (Stream fs = File.Open(System.AppDomain.CurrentDomain.BaseDirectory + "/Files/" + FileName, FileMode.CreateNew))
                                        {
                                            XmlWriter writer = XmlWriter.Create(fs, settings);
                                            xmlDoc.WriteTo(writer); // Write to memorystream
                                            writer.Flush();
                                            fs.Close();
                                        }
                                        //xmlDoc.Save(System.AppDomain.CurrentDomain.BaseDirectory + "/Files/" + FileName);
                                    }

                                    // Email
                                    if (Destinations.Contains("2"))
                                    {
                                        string subject = string.Empty;
                                        using (bscodeRepository bscode = new bscodeRepository())
                                        {
                                            subject = bscode.getSubject(sqlSetting.SQLType);
                                        }
                                        MailProcess sender   = new MailProcess();
                                        EmailData   mailData = new EmailData()
                                        {
                                            To         = s.Email,
                                            Subject    = subject,
                                            Attachment = new FileInfo(System.AppDomain.CurrentDomain.BaseDirectory + "/Files/" + FileName)
                                        };
                                        exeResult = sender.SendEmail(mailData);
                                        if (!string.IsNullOrEmpty(exeResult))
                                        {
                                            log.Save("轉出", "Schedule", s.CustomerName, s.Format, "EMail", s.Email, s.FTPServer, FileName, "失敗", exeResult);
                                        }
                                        else
                                        {
                                            log.Save("轉出", "Schedule", s.CustomerName, s.Format, "EMail", s.Email, s.FTPServer, FileName, "成功", "");
                                        }
                                    }
                                    // FTP
                                    if (Destinations.Contains("3"))
                                    {
                                        FTPData ftpData = new FTPData()
                                        {
                                            FTPServerIP = s.FTPServer,
                                            Port        = 21,
                                            UserName    = s.FTPAccount,
                                            Password    = s.FTPPassword,
                                            file        = new FileInfo(System.AppDomain.CurrentDomain.BaseDirectory + "/Files/" + FileName)
                                        };
                                        FtpProcess uploader = new FtpProcess();
                                        exeResult = uploader.Upload(ftpData);
                                        if (!string.IsNullOrEmpty(exeResult))
                                        {
                                            log.Save("轉出", "Schedule", s.CustomerName, s.Format, "FTP", s.Email, s.FTPServer, FileName, "失敗", exeResult);
                                        }
                                        else
                                        {
                                            log.Save("轉出", "Schedule", s.CustomerName, s.Format, "FTP", s.Email, s.FTPServer, FileName, "成功", "");
                                        }
                                    }
                                }
                            }
                        }
                }
                #endregion
                #region EXCEL
                else if (s.Format.Equals("EXCEL"))
                {
                    using (tblExcelSettingRepository rep = new tblExcelSettingRepository())
                        using (tblExcelMappingRepository map = new tblExcelMappingRepository())
                        {
                            tblExcelSetting setting = rep.get(s.SettingName);
                            if (setting != null)
                            {
                                SQLName  = setting.SQLName;
                                FileName = setting.FileName + ((string.IsNullOrEmpty(setting.FileNameDateFormat)) ? ".xls" : DateTime.Now.ToString(setting.FileNameDateFormat.Replace(",", "")) + ".xls");
                            }

                            List <tblExcelMapping> mapping = map.get(s.SettingName).ToList();
                            using (tblSQLSettingRepository set = new tblSQLSettingRepository())
                            {
                                tblSQLSetting sqlSetting = set.select(SQLName);
                                using (DataAccess da = new DataAccess())
                                {
                                    Tuple <bool, DataTable, string> result = da.TryExecuteDataTable(sqlSetting.SQLStatement, null, null);
                                    if (!result.Item1)
                                    {
                                        log.Save("轉出", "Schedule", s.CustomerName, s.Format, "", s.Email, s.FTPServer, FileName, "失敗", result.Item3);
                                    }

                                    HSSFWorkbook book = ExcelProcess.GenerateExcel(result.Item2, mapping);

                                    // Path
                                    if (Destinations.Contains("1"))
                                    {
                                        FileStream file = new FileStream(s.Path + "\\" + FileName, FileMode.Create);//產生檔案
                                        book.Write(file);
                                        file.Close();
                                        if (!string.IsNullOrEmpty(exeResult))
                                        {
                                            log.Save("轉出", "Schedule", s.CustomerName, s.Format, "PATH", s.Email, s.FTPServer, FileName, "失敗", exeResult);
                                        }
                                        else
                                        {
                                            log.Save("轉出", "Schedule", s.CustomerName, s.Format, "PATH", s.Email, s.FTPServer, FileName, "成功", "");
                                        }
                                    }
                                    if (Destinations.Contains("2") || Destinations.Contains("3"))
                                    {
                                        FileStream file = new FileStream(System.AppDomain.CurrentDomain.BaseDirectory + "/Files/" + FileName, FileMode.Create);//產生檔案
                                        book.Write(file);
                                        file.Close();
                                    }
                                    // EMail
                                    if (Destinations.Contains("2"))
                                    {
                                        string subject = string.Empty;
                                        using (bscodeRepository bscode = new bscodeRepository())
                                        {
                                            subject = bscode.getSubject(sqlSetting.SQLType);
                                        }
                                        MailProcess sender   = new MailProcess();
                                        EmailData   mailData = new EmailData()
                                        {
                                            To         = s.Email,
                                            Subject    = subject,
                                            Attachment = new FileInfo(System.AppDomain.CurrentDomain.BaseDirectory + "/Files/" + FileName)
                                        };
                                        exeResult = sender.SendEmail(mailData);
                                        if (!string.IsNullOrEmpty(exeResult))
                                        {
                                            log.Save("轉出", "Schedule", s.CustomerName, s.Format, "EMail", s.Email, s.FTPServer, FileName, "失敗", exeResult);
                                        }
                                        else
                                        {
                                            log.Save("轉出", "Schedule", s.CustomerName, s.Format, "EMail", s.Email, s.FTPServer, FileName, "成功", "");
                                        }
                                    }
                                    // FTP
                                    if (Destinations.Contains("3"))
                                    {
                                        FTPData ftpData = new FTPData()
                                        {
                                            FTPServerIP = s.FTPServer,
                                            Port        = 21,
                                            UserName    = s.FTPAccount,
                                            Password    = s.FTPPassword,
                                            file        = new FileInfo(System.AppDomain.CurrentDomain.BaseDirectory + "/Files/" + FileName)
                                        };
                                        FtpProcess uploader = new FtpProcess();
                                        exeResult = uploader.Upload(ftpData);
                                        if (!string.IsNullOrEmpty(exeResult))
                                        {
                                            log.Save("轉出", "Schedule", s.CustomerName, s.Format, "FTP", s.Email, s.FTPServer, FileName, "失敗", exeResult);
                                        }
                                        else
                                        {
                                            log.Save("轉出", "Schedule", s.CustomerName, s.Format, "FTP", s.Email, s.FTPServer, FileName, "成功", "");
                                        }
                                    }
                                }
                            }
                        }
                }
                #endregion
            }
            catch (Exception ex)
            {
                exeResult = ex.Message.Replace("\r\n", "");
                log.Save("轉出", "Schedule", s.CustomerName, s.Format, "", s.Email, s.FTPServer, FileName, "失敗", exeResult);
            }
            finally
            {
                FileInfo file = new FileInfo(System.AppDomain.CurrentDomain.BaseDirectory + "/Files/" + FileName);
                Func.DelAttachment(file);
            }
        }