Beispiel #1
0
        public async Task sendMessageFromAdminToGroup(string chatMessage, string channelID, int adminID, Func <string, string> imageConvertionHandler, int eventID)
        {
            //TwilioClient.Init(accountSid, authToken);

            var currentAdmin = Db.Attendes.Find(adminID);

            MessageResource.Create(
                body: chatMessage,
                pathServiceSid: ServiceId,
                pathChannelSid: channelID,
                from: currentAdmin.Email,
                attributes: Newtonsoft.Json.JsonConvert.SerializeObject(new
            {
                senderID    = currentAdmin.ID,
                isAdmin     = true,
                DispalyName = currentAdmin.FirstName,
                // image = imageConvertionHandler(currentAdmin.Thumbnail)
            })
                );

            Db.TextChats.Add(new TextChat()
            {
                GroupID     = getAdminGroupID(),
                SenderID    = adminID,
                IsGroup     = true,
                TextMessage = chatMessage,
                Createdate  = DateTime.Now,
                ChannelID   = Db.ChatChannels.FirstOrDefault(x => x.ChannelID == channelID)?.ID
            });

            Db.SaveChanges();

            #region Async Emailing

            var channelMemebers = GetChannelMembers(channelID).Where(x => x.ID != adminID);
            var attendeeLogic   = new AttendesLogic();

            foreach (var member in channelMemebers)
            {
                var isMessagingEnabled = attendeeLogic.checkIfAttendeeMessagingEnabled(member);
                if (!isMessagingEnabled)
                {
                    continue;
                }
                ;
                await sendAttendeeChatEmails(member.ID, chatMessage, currentAdmin.FirstName);
                await sendAttendeeChatNotifications(member.ID, chatMessage, eventID, currentAdmin.FirstName, channelID);
            }
            #endregion
        }
Beispiel #2
0
        public async Task sendAttendeeMessage(string chatMessage, string channelID, int attendeeID, bool isAdminGroup, Func <string, string> imageConvertionHandler, int eventID, int?receiverID = null)
        {
            try
            {
                TwilioClient.Init(AccountSid, AuthToken);
                //TwilioClient.Init(accountSid, authToken);
                var attendee = Db.Attendes.Find(attendeeID);
                MessageResource.Create(
                    body: chatMessage,
                    pathServiceSid: ServiceId,
                    pathChannelSid: channelID,
                    from: attendee.Email,
                    attributes: Newtonsoft.Json.JsonConvert.SerializeObject(new
                {
                    senderID    = attendeeID,
                    isAdmin     = false,
                    DispalyName = attendee.FirstName,
                    // image = imageConvertionHandler(attendee.Thumbnail)
                })
                    );
                Db.TextChats.Add(new TextChat()
                {
                    SenderID    = attendeeID,
                    GroupID     = isAdminGroup ? getAdminGroupID() : null,
                    ReceiverID  = !isAdminGroup ? receiverID : (int?)null,
                    IsGroup     = isAdminGroup,
                    TextMessage = chatMessage,
                    Createdate  = DateTime.Now,
                    ChannelID   = Db.ChatChannels.FirstOrDefault(x => x.ChannelID == channelID)?.ID
                });

                Db.SaveChanges();

                #region Async Emailing
                if (!isAdminGroup)
                {
                    var isMessagingEnabled = new AttendesLogic().checkIfAttendeeMessagingEnabled(receiverID.Value);
                    if (!isMessagingEnabled)
                    {
                        throw new Exception("Reciever is not accepting message at this moment");
                    }
                    ;
                    await sendAttendeeChatEmails(receiverID.Value, chatMessage, attendee.FirstName);
                    await sendAttendeeChatNotifications(receiverID.Value, chatMessage, eventID, attendee.FirstName, channelID);
                }
                else
                {
                    var admins = await GetEventAdmins(Db.ChatChannels.FirstOrDefault(x => x.ChannelID == channelID)?.EventID ?? throw new NullReferenceException("Event ID is null"));

                    foreach (var admin in admins)
                    {
                        await sendAttendeeChatEmails(admin.ID, chatMessage, attendee.FirstName);
                        await sendAttendeeChatNotifications(admin.ID, chatMessage, eventID, attendee.FirstName, channelID);
                    }
                }
                #endregion
            }

            catch (Exception ex)
            {
                Helpers.LogError(ex.Message, ex);
                throw;
            }
        }
Beispiel #3
0
        public async Task <List <Attende> > GetAllUser()
        {
            AttendesLogic attendesLogic = new AttendesLogic();

            return(await attendesLogic.GetAttendes(checkAttendeeValidity : new AtteendeeValidator()));
        }
Beispiel #4
0
        public async Task <GPSAPILogin1> AttendiLogin(string email, string password, enPlatformTypes platform, string deviceToken, string isactive, Func <string, string> imageConvertionHandler, string imageSavePath, string mobileOSVersion, string mobileDeviceUniqueToken)
        {
            try
            {
                var           client        = new RestClient(string.Format("{0}/eventapp/api/Login", GalacticConfigs.GalacticApiBaseUrl));
                var           request       = new RestRequest(Method.POST);
                List <Event>  AccessList    = new List <Event>();
                GPSAPILogin1  accessEvents  = new GPSAPILogin1();
                AttendesLogic attendesLogic = new AttendesLogic();
                request.AddHeader("cache-control", "no-cache");
                request.AddHeader("content-type", "application/json");
                request.AddParameter("application/json", string.Format("{{\n\tEmail:'{0}',\n\tPassword:'******',\n\tToken:'{2}'\n}}", email, password, GalacticApiSecretKeyEncoded), ParameterType.RequestBody);
                IRestResponse <GPSAPILogin> response2 = client.Execute <GPSAPILogin>(request);
                EventLogic eventLogic = new EventLogic();
                Attende    attende;

                if (response2.Data == null)
                {
                    throw response2.ErrorException;
                }
                bool isAdmin = await IsAdmin(email, password);

                if (response2.Data.IsAuthenticated || isAdmin)
                {
                    LogoutExistingUsersWithSameFBToken(deviceToken);
                    attende = await Db.Attendes.FirstOrDefaultAsync(x => x.Email == email);

                    string authToken; // Guid.NewGuid().ToString("n");
                    response2.Data.Message         = null;
                    response2.Data.IsAuthenticated = true;
                    response2.Data.HasPassword     = true;
                    if (attende == null)
                    {
                        attende = new Attende
                        {
                            Email     = email,
                            Thumbnail = attendesLogic.GenerateImageFromName(response2.Data.FirstName, response2.Data.LastName, imageSavePath),
                            AddedON   = DateTime.Now,
                            FirstName = response2.Data.FirstName,
                            Lastname  = response2.Data.LastName,
                            IsSpeaker = response2.Data.AttendeeType?.ToLower() == "speaker"
                        };
                        Db.Attendes.Add(attende);
                        Db.SaveChanges();
                        authToken            = Authenticate.GenerateToken(attende.ID);
                        response2.Data.Token = authToken;
                        attende.UserSessions.Add(new UserSession
                        {
                            AuthToken   = authToken,
                            IsActive    = (isactive == "0" ? false : true),
                            Platform    = platform.ToString(),
                            CreateDate  = DateTime.Now,
                            DeviceToken = deviceToken
                        });
                        Db.SaveChanges();
                        foreach (var item in response2.Data.UserEvents)
                        {
                            if (Db.Events.Any(x => x.GalacticEventId == item.GalacticEventID))
                            {
                                var eventRecord = Db.Events.FirstOrDefault(x => x.GalacticEventId == item.GalacticEventID);
                                if (!Db.AttendesEvents.Any(x => x.AttendesID == attende.ID && x.EventID == eventRecord.ID))
                                {
                                    Db.AttendesEvents.Add(new AttendesEvent
                                    {
                                        AttendesID = attende.ID,
                                        EventID    = eventRecord.ID,
                                    });
                                }
                            }
                            else
                            {
                                //create event if not exsit
                                //add event activities
                                var eventActivities = EventActivities(item.GalacticEventID);
                                var @event          = new Event
                                {
                                    GalacticEventId = item.GalacticEventID,
                                    EventName       = item.EventName,
                                    AttendesEvents  = new List <AttendesEvent> {
                                        new AttendesEvent {
                                            AttendesID = attende.ID
                                        }
                                    },
                                    Activites = eventActivities.ProgramActivities.Select(x => new Activite
                                    {
                                        StartTime   = x.ActivityStartTime.ToSafeDate(),
                                        EndTime     = x.ActivityEndTime.ToSafeDate(),
                                        CreateON    = DateTime.Now,
                                        Description = x.ActivityName,
                                    }).ToList()
                                };
                                await eventLogic.AddUpdateEvent(@event);
                            }
                        }
                        await Db.SaveChangesAsync();
                    }
                    else
                    {
                        authToken            = Authenticate.GenerateToken(attende.ID);
                        response2.Data.Token = authToken;
                        foreach (var item in response2.Data.UserEvents)
                        {
                            if (Db.Events.Any(x => x.GalacticEventId == item.GalacticEventID))
                            {
                                if (!Db.AttendesEvents.Any(x => x.AttendesID == attende.ID))
                                {
                                    Db.AttendesEvents.Add(new AttendesEvent
                                    {
                                        AttendesID = attende.ID,
                                        EventID    = Db.Events.FirstOrDefault(x => x.GalacticEventId == item.GalacticEventID).ID,
                                    });
                                }
                            }
                            else
                            {
                                //create event if not exsit
                                var @event = new Event
                                {
                                    GalacticEventId = item.GalacticEventID,
                                    EventName       = item.EventName,
                                    AttendesEvents  = new List <AttendesEvent> {
                                        new AttendesEvent {
                                            AttendesID = attende.ID
                                        }
                                    }
                                };
                                await eventLogic.AddUpdateEvent(@event);
                            }
                        }
                        attende.UserSessions.Add(new UserSession
                        {
                            AuthToken               = authToken,
                            IsActive                = (isactive == "0" ? false : true),
                            Platform                = platform.ToString(),
                            CreateDate              = DateTime.Now,
                            DeviceToken             = deviceToken,
                            MobileOSVersion         = mobileOSVersion,
                            MobileDeviceUniqueToken = mobileDeviceUniqueToken
                        });
                        await Db.SaveChangesAsync();
                    }


                    //if (!isAdmin)
                    //{
                    //    foreach (var item in response2.Data.UserEvents)
                    //    {
                    //        var detailing = Db.Events.Where(x => x.GalacticEventId == item.GalacticEventID).FirstOrDefault();
                    //        if (detailing != null)
                    //        {
                    //            AccessList.Add(detailing);
                    //        }
                    //    }
                    //}
                    //else
                    //{
                    AccessList = Db.AttendesEvents.Where(x => x.AttendesID == attende.ID).Select(x => x.Event).ToList();
                    //}

                    accessEvents.Token = response2.Data.Token;
                    accessEvents.Email = response2.Data.Email;

                    accessEvents.IsAuthenticated = response2.Data.IsAuthenticated;
                    accessEvents.Message         = response2.Data.Message;
                    accessEvents.HasPassword     = response2.Data.HasPassword;
                    accessEvents.IsValid         = response2.Data.IsValid;
                    accessEvents.UserID          = attende.ID;
                    accessEvents.UserFullName    = $"{attende.FirstName} {attende.Lastname}";
                    accessEvents.isAdmin         = attende.IsAdmin;
                    accessEvents.UserIcon        = imageConvertionHandler(attende.Thumbnail);
                    accessEvents.UserEvents      = CreateLoginEventDataEntity(AccessList, imageConvertionHandler, email).ToList();

                    return(accessEvents);
                }
                else
                {
                    //if(attende == null)
                    //{
                    //    throw new System.Web.HttpException((int)HttpStatusCode.Unauthorized, "Not Authorized");
                    //}
                    //response2.Data.UserEvents = new List<APIUserEvents>();
                }
                foreach (var item in response2.Data.UserEvents)
                {
                    var detailing = Db.Events.Where(x => x.GalacticEventId == item.GalacticEventID).FirstOrDefault();
                    if (detailing != null)
                    {
                        AccessList.Add(detailing);
                    }
                }

                accessEvents.Token           = response2.Data.Token;
                accessEvents.Email           = response2.Data.Email;
                accessEvents.IsAuthenticated = response2.Data.IsAuthenticated;
                accessEvents.Message         = response2.Data.Message;
                accessEvents.Password        = password;
                accessEvents.HasPassword     = response2.Data.HasPassword;
                accessEvents.IsValid         = response2.Data.IsValid;
                accessEvents.UserEvents      = CreateLoginEventDataEntity(AccessList, imageConvertionHandler, email).ToList();

                return(accessEvents);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }