Example #1
0
        public async Task <GetEventModel> AddParticipant(EventParticipantModel eventParticipantModel, Guid personUid)
        {
            var entity = await CreateParticipantEntity(eventParticipantModel);

            await _eventRepository.AddParticipant(entity);

            var person = await _personRepository.GetPerson(eventParticipantModel.PersonUid);

            var eventEntity = await _eventRepository.GetPureEvent(eventParticipantModel.EventUid);

            if (!string.IsNullOrEmpty(person.Token) && eventParticipantModel.PersonUid != personUid)
            {
                await _pushNotificationService.SendPushNotification(person.Token,
                                                                    MessageTitles.AddParticipantNotificationMessage,
                                                                    new Dictionary <FirebaseNotificationKeys, string> {
                    [FirebaseNotificationKeys.Url] = string.Format(FirebaseNotificationTemplates.EventUrlTemplate, eventEntity.EventUid)
                },
                                                                    "Lume",
                                                                    eventEntity.Name);
            }
            if (eventEntity.Administrator != null && eventEntity.Administrator.Token != null && eventEntity.Administrator.PersonUid != personUid)
            {
                if (eventParticipantModel.ParticipantStatus == ParticipantStatus.WaitingForApproveFromEvent)
                {
                    await _pushNotificationService.SendPushNotification(eventEntity.Administrator.Token,
                                                                        MessageTitles.ParticipantWaitingForApproval,
                                                                        new Dictionary <FirebaseNotificationKeys, string> {
                        [FirebaseNotificationKeys.Url] = string.Format(FirebaseNotificationTemplates.EventUrlTemplate, eventEntity.EventUid)
                    },
                                                                        "Lume",
                                                                        eventEntity.Name);
                }
                else if (eventParticipantModel.ParticipantStatus == ParticipantStatus.Active)
                {
                    await _pushNotificationService.SendPushNotification(eventEntity.Administrator.Token,
                                                                        MessageTitles.ParticipantJoinedTheEvent,
                                                                        new Dictionary <FirebaseNotificationKeys, string> {
                        [FirebaseNotificationKeys.Url] = string.Format(FirebaseNotificationTemplates.EventUrlTemplate, eventEntity.EventUid)
                    },
                                                                        "Lume",
                                                                        eventEntity.Name);
                }
            }
            return(await GetEvent(eventParticipantModel.EventUid));
        }