private void ExecuteRemoveEquipmentItemFromRoom() { var typeToRemove = AddedEquipmentTypes.FirstOrDefault(et => et.Name == CurrentlySelectedEquipmentTypeInRoom.EquipmentType.Name); if (typeToRemove != null) { AddedEquipmentTypes.Remove(typeToRemove); } RemovedEquipmentTypes.Add(CurrentlySelectedEquipmentTypeInRoom.EquipmentType); EquipmentTypesInRoom.First(et => et.Name == CurrentlySelectedEquipmentTypeInRoom.EquipmentType.Name).Amount--; // The type is not present in the room if (FreeEquipmentTypes.FirstOrDefault(et => et.Name == CurrentlySelectedEquipmentTypeInRoom.EquipmentType.Name) == null) { FreeEquipmentTypes.Insert(0, new EquipmentTypeBindableViewModel(CurrentlySelectedEquipmentTypeInRoom.EquipmentType, 1)); } // The type is present in the room else { FreeEquipmentTypes.First(et => et.Name == CurrentlySelectedEquipmentTypeInRoom.EquipmentType.Name).Amount++; } // If the free items have been exhausted for the selected type if (EquipmentTypesInRoom.First(et => et.Name == CurrentlySelectedEquipmentTypeInRoom.EquipmentType.Name).Amount == 0) { EquipmentTypesInRoom.Remove(EquipmentTypesInRoom.First(et => et.Name == CurrentlySelectedEquipmentTypeInRoom.EquipmentType.Name)); CurrentlySelectedEquipmentTypeInRoom = null; } }
public async void Initialize() { RenovationEndDate = RenovationStartDate = null; RenovationStartTime = RenovationEndTime = null; SplittingRoom = false; OtherRenovations = false; AddedEquipmentTypes.Clear(); RemovedEquipmentTypes.Clear(); EquipmentTypesInRoom.Clear(); FreeEquipmentTypes.Clear(); await LoadRooms(); }
// Used by Fody weaver private void OnCurrentlySelectedRoomChanged() { if (CurrentlySelectedRoom is null) { return; } RoomTypes = new ObservableCollection <RoomType>(Enum.GetValues(typeof(RoomType)).Cast <RoomType>().ToList()); RoomTypes.Remove(RoomTypes.First(rt => rt == CurrentlySelectedRoom.Type)); LoadCurrentCalendarWeekForRoom(); ExecuteLoadRoomsAvailableToJoinTo(); AddedEquipmentTypes.Clear(); RemovedEquipmentTypes.Clear(); LoadFreeEquipmentTypes(); LoadRoomEquipmentTypes(); }
private async Task <List <EquipmentItem> > AddedEquipmentItems() { var countByAddedEquipmentType = AddedEquipmentTypes .GroupBy(x => x) .Select(g => new { Value = g.Key, Count = g.Count() }) .OrderByDescending(x => x.Count) .ToList(); var addedItems = new List <EquipmentItem>(); foreach (var pair in countByAddedEquipmentType) { var itemsToAdd = (await _equipmentItemService.GetAllFreeByType(pair.Value)).Take(pair.Count).ToList(); addedItems.AddRange(itemsToAdd); } return(addedItems); }
private async void ExecuteScheduleRenovation() { RoomAlreadyInUse = InvalidTimeFrame = false; var renovationStartPeriod = RenovationStartDate + RenovationStartTime?.TimeOfDay; var renovationEndPeriod = RenovationEndDate + RenovationEndTime?.TimeOfDay; if (renovationEndPeriod <= renovationStartPeriod || renovationStartPeriod == null || renovationEndPeriod == null) { InvalidTimeFrame = true; return; } // Trying to save some RAM if ((await _calendarEntryService.GetAllByRoomAndTimeFrame(CurrentlySelectedRoom.Room, renovationStartPeriod.Value, renovationEndPeriod.Value)).Count != 0) { RoomAlreadyInUse = true; return; } var addedItems = await AddedEquipmentItems(); var removedItems = await RemovedEquipmentItems(); var roomToJoinTo = RoomToJoinTo?.Room; await _renovationService.Create(CurrentlySelectedRoom.Room, roomToJoinTo, NewRoomType, renovationStartPeriod.Value, renovationEndPeriod.Value, SplittingRoom, removedItems, addedItems); if (removedItems.Count > 0) { foreach (var equipmentItem in removedItems) { await _equipmentItemService.Create(equipmentItem.EquipmentType, 1); } } Calendar.AddEvents((await _calendarEntryService.GetAllByRoomAndTimeFrame(CurrentlySelectedRoom.Room, renovationStartPeriod.Value, renovationEndPeriod.Value)).ToList()); RenovationEndDate = RenovationStartDate = RenovationStartTime = RenovationEndTime = null; SplittingRoom = false; OtherRenovations = false; AddedEquipmentTypes.Clear(); RemovedEquipmentTypes.Clear(); LoadFreeEquipmentTypes(); LoadRoomEquipmentTypes(); }