public void ShareActivity(ShareActivity model, Controller ctrl)
        {
            List <PlayerDailyActivityCSV> ListOfActivitiesCSV = CreateListOfActivities(model, ctrl);

            //Get Player Details
            PlayersRepository playerRepo = new PlayersRepository();
            var player = playerRepo.ReadOne(model.PlayerID);

            var leagueName = (string.IsNullOrEmpty(player.SelectedLeagueName) == false ? player.SelectedLeagueName : "No League Selected");

            string FileName = "DailyActivity_" + player.FullName.Replace(" ", string.Empty) + "_" + DateTime.Now.ToString("ddMMyyyyHHmmss") + ".csv";

            //Now Create CSV
            string fullFilePath = CreateCSV(ListOfActivitiesCSV, FileName, player.FullName, player.EmailAddress, leagueName, ctrl);

            //Now Send Email

            SystemSettingsRepository sysRepo = new SystemSettingsRepository();
            var sys = sysRepo.GetSystemSettings();

            PlayerDashboardRepository pdRepo = new PlayerDashboardRepository();
            var playerDashboard = pdRepo.ReadOne(model.PlayerID);

            EmailsRepository emailRepo = new EmailsRepository();

            string Body = "Hi," +
                          "<br/><br/> I would like to share my Daily Activity Data with you " +
                          "<br/><br/> Personal Message: " + model.MsgBody;
            Guid guid = Guid.NewGuid();

            EmailThread = new Thread(() =>
                                     emailRepo.SendEmailWithAttachment(playerDashboard.PlayerEmailAddress, model.EmailAddress, "Daily Activity Data - " + playerDashboard.PlayerFullName, Body, fullFilePath, EmailThread, ctrl, sys.SupportEmailAddress, null, false));
            EmailThread.Name = "DailyActivityData_" + guid.ToString();
            EmailThread.Start();
        }
Пример #2
0
        public void AutoDataShare(Controller ctrl)
        {
            DateTime TodayDate = DateTime.Now.Date;
            //Get The Players which are Active and their Dashboard is not Expired

            var result           = db.PlayerDashboard.Include("Players").Where(m => m.Players.Active == true && m.DashboardExpiryDate >= TodayDate && m.ShareDataFrequency.HasValue && m.ShareDataWith.HasValue);
            var playerDashboards = result.ToList().Select(m => Map(m)).ToList();

            foreach (var item in playerDashboards)
            {
                bool Proceed = false;
                //check if Daily, Weekly or Monthly

                if (item.ShareDataFrequency == (int)enumShareFrequency.Daily)
                {
                    Proceed = true;
                }

                //Check if Share Data Frequency is Weekly and Seleted Day of Week is same to Today's Day of week then Send Data otherwise continue to next record in loop
                else if (item.ShareDataFrequency == (int)enumShareFrequency.Weekly && item.DayOfWeek == (int)TodayDate.DayOfWeek)
                {
                    Proceed = true;
                }

                //Check if Share Data Frequency is Monthly and Today is 1st Date of the month then Send Data otherwise continue to next record in loop
                else if (item.ShareDataFrequency == (int)enumShareFrequency.Monthly && TodayDate.Day == 1)
                {
                    Proceed = true;
                }

                if (Proceed)
                {
                    string EmailTo    = "";
                    string LeagueName = "";
                    List <PlayerDailyActivityCSV> ListOfDailyActivities    = new List <PlayerDailyActivityCSV>();
                    List <WeeklyActivityCSV>      ListOfWeeklyActivities   = new List <WeeklyActivityCSV>();
                    List <PlayerAchievementsExt>  ListOfPlayerAchievements = new List <PlayerAchievementsExt>();

                    //LeaguesRepository leagueRepo = new LeaguesRepository();
                    //var league = leagueRepo.GetPlayerSelectedLeague(item.PlayerID);

                    //LeagueName = league.LeagueID.HasValue ? league.LeagueName : "No League Selected";

                    //#region Get Email To Addresses

                    //if (item.ShareDataWith == (int)enumShareWith.Coach)
                    //{
                    //    PlayersRepository playerRepo = new PlayersRepository();
                    //    var coach = playerRepo.GetPlayerLeagueCoach(item.PlayerID);

                    //    EmailTo = coach.CoachUserID.HasValue ? coach.CoachEmail + ";" : "";
                    //}

                    //if (item.ShareDataWith == (int)enumShareWith.Team)
                    //{
                    //    PlayersRepository playerRepo = new PlayersRepository();
                    //    var teamEmails = playerRepo.GetPlayerTeamMemberEmailAddresses(item.PlayerID);

                    //    EmailTo += teamEmails;
                    //}

                    //if (item.ShareDataWith == (int)enumShareWith.All)
                    //{
                    //    PlayersRepository playerRepo = new PlayersRepository();
                    //    var coach = playerRepo.GetPlayerLeagueCoach(item.PlayerID);

                    //    EmailTo = coach.CoachUserID.HasValue ? coach.CoachEmail + ";" : "";

                    //    var teamEmails = playerRepo.GetPlayerTeamMemberEmailAddresses(item.PlayerID);

                    //    EmailTo += teamEmails;
                    //}

                    if (!string.IsNullOrEmpty(item.AdditionalRecipients))
                    {
                        EmailTo += string.IsNullOrEmpty(EmailTo) ? item.AdditionalRecipients : ";" + item.AdditionalRecipients;
                    }

                    #endregion Get Email To Addresses

                    #region Get Daily Activitied List - Food & Drink

                    {
                        ShareActivity model = new ShareActivity()
                        {
                            ShareFrequencyID = item.ShareDataFrequency.HasValue ? item.ShareDataFrequency.Value == 1 ? 2 : item.ShareDataFrequency.Value : 2,
                            PlayerID         = item.PlayerID
                        };
                        PlayerDailyActivityRepository pdaRepo = new PlayerDailyActivityRepository();
                        ListOfDailyActivities = pdaRepo.CreateListOfActivities(model, ctrl);
                    }

                    #endregion Get Daily Activitied List - Food & Drink

                    #region Get Weekly Activitied List

                    {
                        ShareActivity model = new ShareActivity()
                        {
                            ShareFrequencyID = item.ShareDataFrequency.HasValue ? item.ShareDataFrequency.Value : 2,
                            PlayerID         = item.PlayerID
                        };
                        PlayerWeeklyActivityRepository pwaRepo = new PlayerWeeklyActivityRepository();
                        ListOfWeeklyActivities = pwaRepo.CreateListOfActivities(model, ctrl);
                    }

                    #endregion Get Weekly Activitied List

                    #region Get Achievements List

                    {
                        PlayerAchievementsRepository paRepo = new PlayerAchievementsRepository();
                        ListOfPlayerAchievements = paRepo.ReadAll_Dashboard(item.PlayerID);
                    }

                    #endregion Get Achievements List

                    #region Create Excel Spread sheet with 3 Sheets

                    var path = ctrl.Server.MapPath(SecurityUtils.ActivityData_Path);

                    //if Directory is not exists then create one
                    if (!System.IO.Directory.Exists(path))
                    {
                        System.IO.Directory.CreateDirectory(path);
                    }

                    string FileName     = "DashboardData_" + item.PlayerFullName.Replace(" ", string.Empty) + "_" + DateTime.Now.ToString("ddMMyyyyHHmmss") + ".xlsx";
                    string FullFilePath = System.IO.Path.Combine(path, FileName);

                    ExportDashboardDataToExcel(FullFilePath, item.PlayerFullName, item.PlayerEmailAddress, LeagueName, ListOfDailyActivities, ListOfWeeklyActivities, ListOfPlayerAchievements);

                    //TODO: Now Send Email

                    EmailsRepository emailRepo = new EmailsRepository();

                    string Body = "Hi," +
                                  "<br/><br/> I would like to share my MANvFAT Progress Data with you." +
                                  "<br/><br/> Player Name: " + item.PlayerFullName +
                                  "<br/> Player Email Address: " + item.PlayerEmailAddress +
                                  "<br/> League Name: " + LeagueName;

                    Guid guid = Guid.NewGuid();
                    EmailThread = new Thread(() =>
                                             emailRepo.SendEmailWithAttachment(SecurityUtils.SiteAdminEmail, EmailTo, "Dashboard Auto Data Sharing: " + item.PlayerFullName, Body, FullFilePath, EmailThread, ctrl, null, null));
                    EmailThread.Name = "DashboardDataShare_" + guid.ToString();
                    EmailThread.Start();

                    #endregion Create Excel Spread sheet with 3 Sheets
                }
            }
        }