public async Task BulkChangeAppointmentStatus(BulkUpdateAppointmentStatus request, CancellationToken cancellationToken = default) { if (!(request.Keys?.Any() ?? false)) { throw new NotFoundException(nameof(Appointment), request.Keys); } var usersToSearch = request.Keys.Select(x => x.UserId).ToList(); var branchesToSearch = request.Keys.Select(x => x.BranchId).ToList(); var servicesToSearch = request.Keys.Select(x => x.ServiceId).ToList(); var newStatus = request.AppointmentStatus.ToString(); var entities = (await _context.Appointments .Where(x => usersToSearch.Contains(x.UserId) && branchesToSearch.Contains(x.BranchId) && servicesToSearch.Contains(x.ServiceId) && x.Status != newStatus) .ToListAsync(cancellationToken)) .Where(x => request.Keys .Any(key => key.UserId == x.UserId && key.BranchId == x.BranchId && key.ServiceId == x.ServiceId)).ToList(); if (!entities.Any()) { return; } foreach (var entity in entities) { request.Map(entity); } _context.Appointments.UpdateRange(entities); await _context.SaveChangesAsync(cancellationToken); }
public async Task <ActionResult> BulkChangeAppointmentStatus(BulkUpdateAppointmentStatus request) { await _appointmentSchedulerService.BulkChangeAppointmentStatus(request); return(Ok()); }