Exemplo n.º 1
0
        public ModelMR GetRoomInfoByID(string roomid)
        {
            APIHelper ws = new APIHelper();

            ModelMR lis = ws.GetMeetingRoomByID(roomid);

            return(lis);
        }
Exemplo n.º 2
0
        public bool UpdateMRRoom(ModelMR mr)
        {
            clsSQLBuilder cls = new clsSQLBuilder();

            cls.AddField("ACCESSRIGHT", clsSQLBuilder.FieldType.FD_STRING, mr.ACCESSRIGHT, true);
            cls.AddField("CNPC", clsSQLBuilder.FieldType.FD_STRING, mr.CNPC, true);
            cls.AddField("EQIPMENT", clsSQLBuilder.FieldType.FD_STRING, mr.EQIPMENT, true);
            cls.AddField("EXT", clsSQLBuilder.FieldType.FD_STRING, mr.EXT, true);
            // cls.AddField("FLOOR", clsSQLBuilder.FieldType.FD_STRING, mr.FLOOR, true);
            cls.AddField("IMGPATH", clsSQLBuilder.FieldType.FD_STRING, mr.IMGPATH, true);
            cls.AddField("IP", clsSQLBuilder.FieldType.FD_STRING, mr.IP, true);
            cls.AddField("MAXP", clsSQLBuilder.FieldType.FD_NUMBER, mr.MAXP.ToString(), true);

            cls.AddField("MINP", clsSQLBuilder.FieldType.FD_NUMBER, mr.MINP.ToString(), true);
            cls.AddField("POSTPERIOD", clsSQLBuilder.FieldType.FD_NUMBER, mr.POSTPERIOD.ToString(), true);
            cls.AddField("PLANT", clsSQLBuilder.FieldType.FD_STRING, mr.PLANT.ToString(), true);
            cls.AddField("ROOMABBR", clsSQLBuilder.FieldType.FD_STRING, mr.ROOMABBR.ToString(), true);
            cls.AddField("ROOMID", clsSQLBuilder.FieldType.FD_STRING, mr.ROOMID.ToString(), false);
            cls.AddField("ROOMNAME", clsSQLBuilder.FieldType.FD_STRING, mr.ROOMNAME.ToString(), true);
            cls.AddField("SITE", clsSQLBuilder.FieldType.FD_STRING, mr.SITE.ToString(), true);
            cls.AddField("SITEID", clsSQLBuilder.FieldType.FD_STRING, GetSiteid(mr.SITE, mr.PLANT, mr.FLOOR), true);

            string sqls = string.Format(@"MERGE INTO {0} USING DUAL
                    ON (ROOMID = '{1}')
                    WHEN MATCHED THEN
                        UPDATE SET {2}
                    WHEN NOT MATCHED THEN
                        INSERT {3}"
                                        , "MBS_ROOM "
                                        , mr.ROOMID
                                        , cls.GetString_Update()
                                        , cls.GetString_Insert()
                                        );


            DALService.ExecuteNonQuery(sqls);
            return(true);
        }
Exemplo n.º 3
0
        public string BookRoomEvent([FromBody] ModelRecord recordobj)
        {
            string   ret = "成功預約";
            DateTime out1;

            try
            {
                APIHelper ws        = new APIHelper();
                UserInfo  vUserInfo = new UserInfo();
                string    roomid    = recordobj.ROOMID;

                ModelMR mr = ws.GetMeetingRoomByID(roomid);
                if (mr == null)
                {
                    throw new Exception("找不到會議室");
                }

                DateTime sdt = DateTime.Parse(recordobj.STARTTIME);
                DateTime edt = DateTime.Parse(recordobj.ENDTIME);

                // .ToString("yyyy/MM/dd HH:mm:ss"),
                List <int> minuInt = new List <int> {
                    0, 15, 30, 45
                };
                if (!minuInt.Contains(sdt.Minute) || !minuInt.Contains(edt.Minute))
                {
                    throw new Exception("時間格式錯誤");
                }
                TimeSpan ts = edt.Subtract(sdt);

                if (ts.TotalSeconds == 0)
                {
                    throw new Exception("起始結束時間不可一樣");
                }
                if (DateTime.Compare(DateTime.Today, sdt) > 0)
                {
                    throw new Exception("預約日期不可小於今日");
                }

                // 檢查預約天數
                if (DateTime.Compare(sdt, DateTime.Today.AddDays(mr.POSTPERIOD)) > 0)
                {
                    throw new Exception("預約日期不可大於 (" + mr.POSTPERIOD + ") 天");
                }

                // 檢查會議室時間是否為系統預約
                int           dateday = (int)sdt.DayOfWeek;
                List <string> sqls    = new List <string>();


                #region   檢查 是否被預約
                sqls.Add(string.Format(@"
                    select *
                      from MBS_RECORD t
                     where t.roomid = '{0}'
                       and( t.starttime between
                           to_date('{1}', 'yyyy/mm/dd hh24:mi:ss') AND
                           to_date('{2}', 'yyyy/mm/dd hh24:mi:ss')
                         or  t.endtime between
                           to_date('{1}', 'yyyy/mm/dd hh24:mi:ss') AND
                           to_date('{2}', 'yyyy/mm/dd hh24:mi:ss'))
               ", roomid, sdt.AddSeconds(1).ToString("yyyy/MM/dd HH:mm:ss"), edt.AddSeconds(-1).ToString("yyyy/MM/dd HH:mm:ss")));
                #endregion
                #region 檢查系統預約 sql

                sqls.Add(string.Format(@"select a.dateday,a.starttime,a.endtime
                      from MBS_LOCKROOM a
                     where a.roomid = '{0}'
                       and (a.starttime between '{2}' AND '{3}' or
                           a.endtime between '{4}' AND '{5}')
                           and a.dateday = '{1}'
                    ", roomid
                                       , dateday.ToString(),
                                       sdt.ToString("HHmm"),
                                       edt.AddMinutes(-1).ToString("HHmm"),
                                       sdt.AddMinutes(1).ToString("HHmm"),
                                       edt.ToString("HHmm")
                                       ));
                #endregion

                DataSet ds = DALService.ExecuteBatchQuery(sqls.ToArray());
                IEnumerable <DataRow> drow = ds.Tables[0].AsEnumerable();
                if (drow.Count() > 0)
                {
                    string sRepeat = string.Join("\n", drow.Select(
                                                     x => x["applier"].ToString() + " From : " + x["starttime"].ToString() + " To :" + x["endtime"].ToString()).ToArray());

                    throw new Exception("重覆預約 \n" + sRepeat);
                }

                IEnumerable <DataRow> Srow = ds.Tables[1].AsEnumerable();
                ds.Dispose();
                if (Srow.Count() > 0)
                {
                    string sRepeat = string.Join("\n", Srow.Select(
                                                     x => Enum.GetName(typeof(DayOfWeek), int.Parse(x["dateday"].ToString())) + " : " + x["starttime"].ToString() + " To :" + x["endtime"].ToString()
                                                     ).ToArray());
                    throw new Exception("此會議室已被系統預約 時間 \n" + sRepeat);
                }



                recordobj.RECORDID   = Guid.NewGuid().ToString();
                recordobj.BOOKTYPE   = "USER";
                recordobj.APPLIER    = vUserInfo.CName;
                recordobj.APPLIEREXT = vUserInfo.Ext;
                recordobj.APPLIERID  = vUserInfo.UserId;
                recordobj.UPDATET    = "sysdate";
                ws.BookingEvent(new
                                [] { recordobj });
            }
            catch (Exception ex)
            {
                ret = ex.Message;
            }
            //檢查預約事件 格式是否異常


            return(ret);
        }