예제 #1
0
 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;
         }
     }
 }
예제 #2
0
 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;
         }
     }
 }
예제 #3
0
        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());
        }
예제 #4
0
        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()));
            }
        }
예제 #5
0
        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()));
            }
        }
예제 #6
0
        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()));
            }
        }
예제 #7
0
        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);
        }