private static void AddUsernamesToEventSteps(UserHelper requestingUser, EventViewmodel mappedEvent, List <UserRabbitMq> usersFromUserService) { foreach (var eventStep in mappedEvent.EventSteps) { eventStep.Completed = eventStep.EventStepUsers.Any(esu => esu.UserUuid == requestingUser.Uuid); foreach (var eventStepUser in eventStep.EventStepUsers) { eventStepUser.Username = usersFromUserService ?.Find(u => u.Uuid == eventStepUser.UserUuid) ?.Username; } } }
private static void AddUsernamesToEventDate(UserHelper requestingUser, EventViewmodel mappedEvent, List <UserRabbitMq> usersFromUserService) { foreach (var eventDate in mappedEvent.EventDates) { eventDate.Subscribed = eventDate.EventDateUsers.Any(edu => edu.UserUuid == requestingUser.Uuid); foreach (var eventDateUser in eventDate.EventDateUsers) { eventDateUser.Username = usersFromUserService ?.Find(u => u.Uuid == eventDateUser.UserUuid) ?.Username; } } }
private static List <Guid> GetUserUuidsFromEvent(EventViewmodel eventViewModel) { var userUuidCollection = new List <Guid>(); userUuidCollection.AddRange(eventViewModel.EventDates .SelectMany(ed => ed.EventDateUsers) .Select(edu => edu.UserUuid)); userUuidCollection.AddRange(eventViewModel.EventSteps .SelectMany(es => es.EventStepUsers .Select(esu => esu.UserUuid))); return(userUuidCollection .Distinct() .ToList()); }
public async Task <IActionResult> Edit(EventViewmodel model) { try { var company = await context.Companies.FindAsync(model.CompanyId); if (company == null) { return(NotFound(new { message = $"Company with ID {model.CompanyId} was not found." })); } var client = await context.Clients.FindAsync(model.ClientId); if (client == null) { return(NotFound(new { message = $"Client with ID {model.ClientId} was not found." })); } var product = await context.Products.FindAsync(model.ProductId); if (product == null) { return(NotFound(new { message = $"Product with ID {model.ProductId} was not found." })); } var ev = await context.Events.FindAsync(model.Id); ev.AllDay = (model.End == DateTime.MinValue || model.End == model.Start.AddDays(1)); ev.Client = client; ev.Company = company; ev.Description = model.Description; ev.End = model.End; ev.Product = product; ev.Start = model.Start; ev.Title = model.Title; await context.SaveChangesAsync(); return(Ok(ev)); } catch (Exception ex) { _logger.LogError($"Unable to update event.", ex); return(BadRequest(ex.ToString())); } }
public async Task <IActionResult> Create(EventViewmodel model) { try { var company = await context.Companies.FindAsync(model.CompanyId); if (company == null) { return(NotFound(new { message = $"Company with ID {model.CompanyId} was not found." })); } var client = await context.Clients.FindAsync(model.ClientId); if (client == null) { return(NotFound(new { message = $"Client with ID {model.ClientId} was not found." })); } var ev = new CalendarEvent { AllDay = model.AllDay, Client = client, Company = company, Description = model.Description, End = model.End, Start = model.Start, Title = model.Title }; await context.Events.AddAsync(ev); await context.SaveChangesAsync(); // Once event is saved, set an edit URL where it can be updated. ev.Url = $"Edit?id={ev.Id}"; await context.SaveChangesAsync(); return(Ok(ev)); } catch (Exception ex) { _logger.LogError($"Unable to create event.", ex); return(BadRequest(ex.ToString())); } }
public async Task <IActionResult> Single(int id) { try { var ev = await context.Events .Include(x => x.Company) .Include(x => x.Client) .Include(x => x.Product) .SingleOrDefaultAsync(x => x.Id == id); if (ev == null) { return(NotFound(new { message = $"Event with ID {id} was not found." })); } var appointment = new EventViewmodel { AllDay = ev.AllDay, ClientId = ev.Client.Id, CompanyId = ev.Company.Id, Description = ev.Description, End = ev.End, Id = ev.Id, ProductId = ev.Product.Id, Start = ev.Start, Title = ev.Title, Url = ev.Url }; return(Ok(appointment)); } catch (Exception ex) { _logger.LogError($"Unable to get event", ex); return(BadRequest(ex.ToString())); } }
private async Task <EventViewmodel> GetAppointmentAsync(int?id) { var ev = await context.Events .Include(x => x.Company) .Include(x => x.Client) .Include(x => x.Product) .SingleOrDefaultAsync(x => x.Id == id); var appointment = new EventViewmodel { AllDay = ev.AllDay, ClientId = ev.Client.Id, CompanyId = ev.Company.Id, Description = ev.Description, End = ev.End, Id = ev.Id, ProductId = ev.Product.Id, Start = ev.Start, Title = ev.Title, Url = ev.Url }; return(appointment); }