public List <M_Reservation> GetReservations()
        {
            var entities = new List <M_Reservation>();

            using (var rdr = SqlHelper.ExecuteReader(this._databaseConnectionString, CommandType.Text, SqlCommands_Sc.Sql_M_Reservation_Repository_GetReservations, null)) {
                while (rdr.Read())
                {
                    var entity = new M_Reservation();
                    entity.Id           = SqlTypeConverter.DBNullStringHandler(rdr["Id"]);
                    entity.Name         = SqlTypeConverter.DBNullStringHandler(rdr["Name"]);
                    entity.ExpStartTime = SqlTypeConverter.DBNullDateTimeHandler(rdr["ExpStartTime"]);
                    entity.StartTime    = SqlTypeConverter.DBNullDateTimeHandler(rdr["StartTime"]);
                    entity.EndTime      = SqlTypeConverter.DBNullDateTimeHandler(rdr["EndTime"]);
                    entity.ProjectId    = SqlTypeConverter.DBNullStringHandler(rdr["ProjectId"]);
                    entity.Creator      = SqlTypeConverter.DBNullStringHandler(rdr["Creator"]);
                    entity.UserId       = SqlTypeConverter.DBNullStringHandler(rdr["UserId"]);
                    entity.CreatedTime  = SqlTypeConverter.DBNullDateTimeHandler(rdr["CreatedTime"]);
                    entity.Comment      = SqlTypeConverter.DBNullStringHandler(rdr["Comment"]);
                    entity.Enabled      = SqlTypeConverter.DBNullBooleanHandler(rdr["Enabled"]);
                    entity.Status       = SqlTypeConverter.DBNullResultHandler(rdr["Status"]);
                    entities.Add(entity);
                }
            }
            return(entities);
        }
        public List <M_Reservation> GetReservationsInSpan(DateTime start, DateTime end)
        {
            SqlParameter[] parms = { new SqlParameter("@expStartTime", SqlDbType.DateTime),
                                     new SqlParameter("@endTime",      SqlDbType.DateTime) };

            parms[0].Value = start;
            parms[1].Value = end;

            var entities = new List <M_Reservation>();

            using (var rdr = SqlHelper.ExecuteReader(this._databaseConnectionString, CommandType.Text, SqlCommands_Sc.Sql_M_Reservation_Repository_GetReservationsInSpan, parms)) {
                while (rdr.Read())
                {
                    var entity = new M_Reservation();
                    entity.Id           = SqlTypeConverter.DBNullStringHandler(rdr["Id"]);
                    entity.Name         = SqlTypeConverter.DBNullStringHandler(rdr["Name"]);
                    entity.ExpStartTime = SqlTypeConverter.DBNullDateTimeHandler(rdr["ExpStartTime"]);
                    entity.StartTime    = SqlTypeConverter.DBNullDateTimeHandler(rdr["StartTime"]);
                    entity.EndTime      = SqlTypeConverter.DBNullDateTimeHandler(rdr["EndTime"]);
                    entity.ProjectId    = SqlTypeConverter.DBNullStringHandler(rdr["ProjectId"]);
                    entity.Creator      = SqlTypeConverter.DBNullStringHandler(rdr["Creator"]);
                    entity.UserId       = SqlTypeConverter.DBNullStringHandler(rdr["UserId"]);
                    entity.CreatedTime  = SqlTypeConverter.DBNullDateTimeHandler(rdr["CreatedTime"]);
                    entity.Comment      = SqlTypeConverter.DBNullStringHandler(rdr["Comment"]);
                    entity.Enabled      = SqlTypeConverter.DBNullBooleanHandler(rdr["Enabled"]);
                    entity.Status       = SqlTypeConverter.DBNullResultHandler(rdr["Status"]);
                    entities.Add(entity);
                }
            }
            return(entities);
        }
        public M_Reservation GetReservation(string id)
        {
            SqlParameter[] parms = { new SqlParameter("@Id", SqlDbType.VarChar, 100) };
            parms[0].Value = SqlTypeConverter.DBNullStringChecker(id);

            M_Reservation entity = null;

            using (var rdr = SqlHelper.ExecuteReader(this._databaseConnectionString, CommandType.Text, SqlCommands_Sc.Sql_M_Reservation_Repository_GetReservation, parms)) {
                if (rdr.Read())
                {
                    entity              = new M_Reservation();
                    entity.Id           = SqlTypeConverter.DBNullStringHandler(rdr["Id"]);
                    entity.Name         = SqlTypeConverter.DBNullStringHandler(rdr["Name"]);
                    entity.ExpStartTime = SqlTypeConverter.DBNullDateTimeHandler(rdr["ExpStartTime"]);
                    entity.StartTime    = SqlTypeConverter.DBNullDateTimeHandler(rdr["StartTime"]);
                    entity.EndTime      = SqlTypeConverter.DBNullDateTimeHandler(rdr["EndTime"]);
                    entity.ProjectId    = SqlTypeConverter.DBNullStringHandler(rdr["ProjectId"]);
                    entity.Creator      = SqlTypeConverter.DBNullStringHandler(rdr["Creator"]);
                    entity.UserId       = SqlTypeConverter.DBNullStringHandler(rdr["UserId"]);
                    entity.CreatedTime  = SqlTypeConverter.DBNullDateTimeHandler(rdr["CreatedTime"]);
                    entity.Comment      = SqlTypeConverter.DBNullStringHandler(rdr["Comment"]);
                    entity.Enabled      = SqlTypeConverter.DBNullBooleanHandler(rdr["Enabled"]);
                    entity.Status       = SqlTypeConverter.DBNullResultHandler(rdr["Status"]);
                }
            }
            return(entity);
        }
Example #4
0
        public JsonResult SaveReservation(ReservationModel model, int action)
        {
            try {
                if (model == null)
                {
                    throw new ArgumentException("model");
                }
                var startTime = DateTime.Parse(model.expStartDate);
                var endTime   = DateTime.Parse(model.endDate);
                var interval  = endTime.Subtract(startTime);
                if (interval.TotalSeconds < 0)
                {
                    throw new iPemException("预约结束时间不能早于预约开始时间");
                }
                //if (interval.TotalSeconds > 86400) throw new iPemException("预约总时长不能超过24个小时");
                if (model.nodes == null || model.nodes.Length == 0)
                {
                    throw new iPemException("未选择需要预约的监控节点");
                }

                var project = _projectService.GetProject(model.projectId);
                if (project == null)
                {
                    throw new iPemException("未找到所关联的工程信息");
                }
                if (!(project.StartTime <= startTime && project.EndTime > endTime))
                {
                    throw new iPemException("预约时间已超出关联的工程时间");
                }

                if (action == (int)EnmAction.Add)
                {
                    var newOne = new M_Reservation {
                        Id           = model.id,
                        Name         = model.name,
                        ExpStartTime = startTime,
                        EndTime      = endTime,
                        ProjectId    = project.Id,
                        Creator      = _workContext.Employee() != null?_workContext.Employee().Name : _workContext.User().Uid,
                        UserId       = _workContext.User().Id,
                        CreatedTime  = DateTime.Now,
                        Comment      = model.comment,
                        Enabled      = model.enabled,
                        Status       = EnmResult.Undefine
                    };

                    var nodes = new List <M_NodeInReservation>();
                    foreach (var node in model.nodes)
                    {
                        var keys = Common.SplitKeys(node);
                        if (keys.Length == 2)
                        {
                            var type = int.Parse(keys[0]);
                            nodes.Add(new M_NodeInReservation {
                                ReservationId = newOne.Id,
                                NodeId        = keys[1],
                                NodeType      = Enum.IsDefined(typeof(EnmSSH), type) ? (EnmSSH)type : EnmSSH.Area
                            });
                        }
                    }

                    _reservationService.Add(newOne);
                    _nodesInReservationService.Add(nodes.ToArray());
                    _webLogger.Information(EnmEventType.Other, string.Format("新增预约[{0}]", newOne.Id), _workContext.User().Id, null);
                    return(Json(new AjaxResultModel {
                        success = true, code = 200, message = "保存成功"
                    }));
                }
                else if (action == (int)EnmAction.Edit)
                {
                    var existed = _reservationService.GetReservation(model.id);
                    if (existed == null)
                    {
                        throw new iPemException("预约不存在,保存失败。");
                    }
                    if (existed.Creator != (_workContext.Employee() != null ? _workContext.Employee().Name : _workContext.User().Uid))
                    {
                        throw new iPemException("您没有操作权限。");
                    }

                    existed.Name         = model.name;
                    existed.ExpStartTime = startTime;
                    existed.EndTime      = endTime;
                    existed.ProjectId    = project.Id;
                    existed.Comment      = model.comment;
                    existed.Enabled      = model.enabled;
                    existed.Status       = EnmResult.Undefine;

                    var nodes = new List <M_NodeInReservation>();
                    foreach (var node in model.nodes)
                    {
                        var keys = Common.SplitKeys(node);
                        if (keys.Length == 2)
                        {
                            var type = int.Parse(keys[0]);
                            nodes.Add(new M_NodeInReservation {
                                ReservationId = existed.Id,
                                NodeId        = keys[1],
                                NodeType      = Enum.IsDefined(typeof(EnmSSH), type) ? (EnmSSH)type : EnmSSH.Area
                            });
                        }
                    }

                    _reservationService.Update(existed);
                    _nodesInReservationService.Remove(existed.Id);
                    _nodesInReservationService.Add(nodes.ToArray());
                    _webLogger.Information(EnmEventType.Other, string.Format("更新预约[{0}]", model.id), _workContext.User().Id, null);
                    return(Json(new AjaxResultModel {
                        success = true, code = 200, message = "保存成功"
                    }));
                }

                throw new ArgumentException("action");
            } catch (Exception exc) {
                _webLogger.Error(EnmEventType.Other, exc.Message, _workContext.User().Id, exc);
                return(Json(new AjaxResultModel {
                    success = false, code = 400, message = exc.Message
                }));
            }
        }