/// <summary> /// Редактировать бронь на комнату /// </summary> /// <param name="id">Идентификатор</param> /// <param name="mainDate">Дата</param> /// <param name="start">Время начала</param> /// <param name="end">Конечное время</param> /// <param name="room">Комната</param> /// <returns></returns> public void Edit(int id, DateTime mainDate, DateTime start, DateTime end, RoomInfo room) { orderRoom = dataContent.OrderRooms.FirstOrDefault(x => x.ID == id); if (orderRoom == null) { throw new ArgumentException("Не найден объект"); } OrderRoomStatus status = OrderRoomStatus.FilingArmor; switch (orderRoom.Status) { case 1: { status = OrderRoomStatus.ReservationApproved; break; } case 2: { status = OrderRoomStatus.ReservationDeclined; break; } case 3: { status = OrderRoomStatus.ReservationMarkedForDeletionByManager; break; } } Check(mainDate, start, end, null, room, status, false); SetValue(mainDate, start, end, null, room, status, false); }
/// <summary> /// Редактировать бронь на комнату /// </summary> /// <param name="id">Идентификатор</param> /// <param name="mainDate">Дата</param> /// <param name="start">Время начала</param> /// <param name="end">Конечное время</param> /// <param name="room">Комната</param> /// <param name="status">Статус брони </param> /// <returns></returns> public void Edit(int id, DateTime mainDate, DateTime start, DateTime end, RoomInfo room, OrderRoomStatus status) { orderRoom = dataContent.OrderRooms.FirstOrDefault(x => x.ID == id); if (orderRoom == null) { throw new ArgumentException("Не найден объект"); } Check(mainDate, start, end, null, room, status, false); SetValue(mainDate, start, end, null, room, status, false); }
/// <summary> /// Проверка входных данных при создание/редактирование /// </summary> /// <param name="name">Наименование</param> /// <param name="seatsCount">Количество кресел</param> private void Check(DateTime mainDate, DateTime start, DateTime end, UserInfo user, RoomInfo room, OrderRoomStatus status, bool isNew = true) { if (mainDate == null) { throw new ArgumentException("Не заполнена дата"); } if (start == null) { throw new ArgumentException("Не заполнено начальное время"); } if (end == null) { throw new ArgumentException("Не заполнено конечноеое время"); } start = new DateTime(mainDate.Year, mainDate.Month, mainDate.Day, start.Hour, start.Minute, start.Second); end = new DateTime(mainDate.Year, mainDate.Month, mainDate.Day, end.Hour, end.Minute, end.Second); if (start >= end) { throw new ArgumentException("Начальное время больше конечноеого времени"); } if (user == null && isNew) { throw new ArgumentException("Не указан пользователь"); } if (room == null) { throw new ArgumentException("Не указана комната"); } //if (status == null) // throw new ArgumentException("Не указан статус"); if (dataContent.OrderRooms. Count(x => (x.Start <= start && x.End >= start && x.RoomID == room.ID && x.Status == 1) || (x.Start <= end && x.End >= end && x.RoomID == room.ID && x.Status == 1)) > 0) { throw new ArgumentException("На текущее время уже есть одобренная бронь данной комнаты"); } }
/// <summary> /// Дабавить/редактировать /// </summary> /// <param name="name">Наименование</param> /// <param name="seatsCount">Количество кресел</param> /// <param name="isProjector">Наличие проектора</param> /// <param name="isMarkerBoard">Наличие маркерной доски</param> /// <param name="isBlock">Заблокировать комнату</param> /// <param name="isNew">Новый</param> private void SetValue(DateTime mainDate, DateTime start, DateTime end, UserInfo user, RoomInfo room, OrderRoomStatus status, bool isNew = true) { if (isNew) { orderRoom = new OrderRoom(); orderRoom.UserID = user.ID; } orderRoom.Start = new DateTime(mainDate.Year, mainDate.Month, mainDate.Day, start.Hour, start.Minute, start.Second); orderRoom.End = new DateTime(mainDate.Year, mainDate.Month, mainDate.Day, end.Hour, end.Minute, end.Second); orderRoom.RoomID = room.ID; orderRoom.Status = (int)status; if (isNew) { dataContent.OrderRooms.Add(orderRoom); } dataContent.SaveChanges(); }