public async Task CreateOccupancy(OccupancyDto occupancyDto) { var occupancy = _mapper.Map <Occupancy>(occupancyDto); occupancy.Guid = Guid.NewGuid(); occupancy.CreationDate = DateTime.Now; _occupancyRepository.Add(occupancy); await _occupancyRepository.SaveChangesAsync(); }
public async Task UpdateOccupancy(OccupancyDto occupancyDto) { var occupancy = await _occupancyRepository.GetByGuid(occupancyDto.Guid.ToString()); if (occupancy == null) { throw new KeyNotFoundException($"Cannot update Occupancy. Occupancy with guid {occupancy.Guid} does not exist"); } _mapper.Map(occupancyDto, occupancy); _occupancyRepository.Update(occupancy); await _occupancyRepository.SaveChangesAsync(); }
public IQueryable <OccupancyDto> ByOrg([FromBody] OccupancyRequestModel model) { var list = new List <OccupancyDto>(); var from = DateTime.Now; var until = from.AddMinutes(1); var org = Db.Organisers.SingleOrDefault(x => x.ShortName.Equals(model.OrgName)); if (org == null) { return(list.AsQueryable()); } //Initialisierung des RoomService von NINE var roomService = new RoomService(); //Abfrage der freien Räume durch den RoomInfoService und Zwischenspeicherung desen Responeses als Liste roomList var roomList = roomService.GetFreeRooms(org.Id, false, from, until); foreach (var room in roomList) { var occDto = new OccupancyDto(); occDto.Room.Number = room.Number; occDto.Room.Description = room.Description; // nächste Belegung var nextDate = room.Dates.OrderBy(x => x.Begin).FirstOrDefault(x => x.Begin > from); if (nextDate != null) { var resDto = new ReservationDto { Begin = nextDate.Begin, End = nextDate.End, Name = nextDate.Activity.Name, ShortName = nextDate.Activity.ShortName }; occDto.Next.Add(resDto); } list.Add(occDto); } return(list.AsQueryable()); }
public IQueryable <OccupancyDto> Search([FromBody] RoomSearchRequest request) { // ohne state => alle suchen var from = DateTime.Now; var until = from.AddMinutes(30); bool?isAvailable = null; if (request.state != null) { isAvailable = request.state.isAvailable; if (request.state.from != null) { from = request.state.from.Value; } if (request.state.until != null) { until = request.state.until.Value; } } var rooms = Db.Rooms.Where(r => r.Number.StartsWith(request.number)).ToList(); var result = new List <OccupancyDto>(); foreach (var room in rooms) { var occDto = new OccupancyDto(); occDto.Room.Number = room.Number; occDto.Room.Name = room.Name; occDto.Room.Description = room.Description; if (room.Number.StartsWith("K") || room.Number.StartsWith("L")) { occDto.Room.Campus = "Pasing"; } else if (room.Number.StartsWith("F")) { occDto.Room.Campus = "Karlstrasse"; } else { occDto.Room.Campus = "Lothstrasse"; } // aktuelle Belegung var currentDates = room.Dates .Where(d => (d.End > @from && d.End <= until) || // Veranstaltung endet im Zeitraum (d.Begin >= @from && d.Begin < until) || // Veranstaltung beginnt im Zeitraum (d.Begin <= @from && d.End >= until) // Veranstaltung zieht sich über gesamten Zeitraum ) .OrderBy(x => x.Begin) .ToList(); bool include = true; if (isAvailable.HasValue) { if ((currentDates.Any() && isAvailable.Value) || // es werden freie gesucht, aber sind Belegungen vorhanden (!currentDates.Any() && !isAvailable.Value) ) { include = false; } } if (include) { // aktuelle Belegung aufbauen foreach (var currentDate in currentDates) { var resDto = new ReservationDto { Id = currentDate.Id, Begin = currentDate.Begin, End = currentDate.End, Name = currentDate.Activity.Name, ShortName = currentDate.Activity.ShortName }; occDto.Current.Add(resDto); } // nächste Belegung var nextDate = room.Dates.OrderBy(x => x.Begin).FirstOrDefault(x => x.Begin > from); if (nextDate != null) { var resDto = new ReservationDto { Id = nextDate.Id, Begin = nextDate.Begin, End = nextDate.End, Name = nextDate.Activity.Name, ShortName = nextDate.Activity.ShortName }; occDto.Next.Add(resDto); } result.Add(occDto); } } return(result.AsQueryable()); }
public async Task UpdateOccupancy(string guid, [FromBody] OccupancyDto occupancyDto) { occupancyDto.Guid = new Guid(guid); await _occupancyService.UpdateOccupancy(occupancyDto); }
public async Task CreateOccupancy([FromBody] OccupancyDto occupancyDto) { await _occupancyService.CreateOccupancy(occupancyDto); }