Exemplo n.º 1
0
        public async Task <ActionResult <Models.Reminder> > UpdateReminder(int id, [FromBody] Models.Reminder reminder)
        {
            try
            {
                var existingReminder = await Context.Reminders.FindAsync(id);

                if (existingReminder == null)
                {
                    return(NotFound());
                }

                existingReminder.ChannelId       = reminder.ChannelId;
                existingReminder.Message         = reminder.Message;
                existingReminder.OwnerId         = reminder.OwnerId;
                existingReminder.SentDateUtc     = reminder.SentDateUtc;
                existingReminder.ReminderDateUtc = reminder.ReminderDateUtc;

                await Context.SaveChangesAsync();

                return(Ok(Mapper.Map <Entities.Reminder, Models.Reminder>(existingReminder)));
            }
            catch (Exception ex)
            {
                return(InternalServerError("Failed to update reminder", ex));
            }
        }
Exemplo n.º 2
0
        public async Task <ActionResult <Models.Reminder> > Post([FromBody] Models.Reminder reminder)
        {
            try
            {
                var reminderEntity = Mapper.Map <Models.Reminder, Entities.Reminder>(reminder);

                var discordUser = await Context.DiscordUsers.FindAsync(reminder.OwnerId);

                if (discordUser == null)
                {
                    return(BadRequest(new { message = $"Unable to find user {reminder.OwnerId}" }));
                }

                var channel = await Context.Channels.FindAsync(reminder.ChannelId);

                if (channel == null)
                {
                    return(BadRequest(new { message = $"Unable to find channel {reminder.ChannelId}" }));
                }

                if (!string.IsNullOrWhiteSpace(discordUser.Timezone))
                {
                    var timeZoneInfo = TZConvert.GetTimeZoneInfo(discordUser.Timezone);
                    reminderEntity.ReminderDateUtc = reminderEntity.ReminderDateUtc - timeZoneInfo.GetUtcOffset(DateTime.Now);
                }

                await Context.Reminders.AddAsync(reminderEntity);

                await Context.SaveChangesAsync();

                return(reminder);
            }
            catch (Exception ex)
            {
                return(InternalServerError("Failed to post reminder.", ex));
            }
        }