Esempio n. 1
0
        public override AddUserResponse ProcessRequest(AddUserRequest request)
        {
            AddUserResponse response = new AddUserResponse();

            try
            {
                using (var uow = new SptUnitOfWork())
                {
                    SptUser user = new SptUser
                    {
                        Username = request.Email,
                        Password = request.Password,
                        IsAdmin  = request.IsAdmin,
                        Person   = new Person
                        {
                            FirstName        = request.FirstName,
                            LastName         = request.LastName,
                            Gender           = request.Gender,
                            AgeGroup         = (Person.AgeGroupEnum)request.AgeGroup,
                            ProficiencyLevel = (Person.ProficiencyLevelEnum)request.ProficiencyLevel,
                            CFType           = uow.CFTypeRepository.FindById(request.CFType)
                        }
                    };

                    uow.UserRepository.Add(user);
                    uow.Save();
                }

                return(response);
            }
            catch (Exception)
            {
                throw;
            }
        }
        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            try
            {
                using (var uow = new SptUnitOfWork())
                {
                    var user = uow.UserRepository.FindBy(w => w.Username == context.UserName && w.Password == context.Password).FirstOrDefault();

                    if (user == null)
                    {
                        context.SetError("invalid_grant", "The username or password is incorrect.");
                        context.Rejected();
                        return;
                    }

                    var identity = new ClaimsIdentity(context.Options.AuthenticationType);

                    identity.AddClaim(new Claim(ClaimTypes.Name, user.Username));
                    identity.AddClaim(new Claim("Username", user.Username));
                    identity.AddClaim(new Claim("FullName", user.Person.FullName));
                    context.Validated(identity);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 3
0
        void AddWordPair(SptUnitOfWork uw, string w1, string w2, Word.SoundGroupEnum grp, bool testOnly)
        {
            var speakers = uw.SpeakerRepository.GetAll().ToList();

            var word1 = new Word {
                WordEntry = w1, SoundGroup = grp, TestOnly = testOnly
            };
            var word2 = new Word {
                WordEntry = w2, SoundGroup = grp, TestOnly = testOnly
            };

            speakers.ForEach(t => word1.WordSpeakers.Add(new WordSpeaker {
                Speaker = t, FileName = w1 + "." + t.SpeakerName + ".mp3"
            }));
            speakers.ForEach(t => word2.WordSpeakers.Add(new WordSpeaker {
                Speaker = t, FileName = w2 + "." + t.SpeakerName + ".mp3"
            }));

            uw.WordRepository.Add(word1);
            uw.WordRepository.Add(word2);
            uw.Save();

            word1.Pair = word2;
            word2.Pair = word1;
            uw.WordRepository.Edit(word1);
            uw.WordRepository.Edit(word2);
            uw.Save();
        }
        public override GetClientInfoResponse ProcessRequest()
        {
            var response = new GetClientInfoResponse();

            try
            {
                using (var uow = new SptUnitOfWork())
                {
                    string username = AuthContext.Instance.UserName;
                    var    user     = uow.UserRepository.GetByUserName(username);
                    response.IsAdmin = user.IsAdmin;

                    var cf  = user.Person.CFType;
                    int?qid = null;

                    Activity activity       = new Activity();
                    var      userActivities = user.SptUserActivities;

                    if (userActivities.Any())
                    {
                        var unfinished = userActivities.Where(t => t.FinishDate == null);
                        if (unfinished.Any())
                        {
                            var current = unfinished.Single();
                            activity = current.Activity;
                            qid      = current.SptUserActivityDetails.Where(t => t.Result == null).OrderBy(t => t.Id).First().Id;
                            FillResponse(response, activity, cf, qid);
                        }
                        else
                        {
                            var lastFinished = userActivities.OrderByDescending(t => t.FinishDate).First();
                            //if (lastFinished.FinishDate.Value.AddDays(1) < DateTime.Now)
                            //    activity = uow.ActivityRepository.FindBy(t => t.ActivityOrder == lastFinished.Activity.ActivityOrder + 1).FirstOrDefault();
                            //else
                            //    activity = null;

                            activity = uow.ActivityRepository.FindBy(t => t.ActivityOrder == lastFinished.Activity.ActivityOrder + 1).FirstOrDefault();


                            FillResponse(response, activity, cf, null);
                        }
                    }
                    else
                    {
                        activity = uow.ActivityRepository.FindBy(t => t.ActivityOrder == 1).First();
                        FillResponse(response, activity, cf, null);
                    }
                }

                return(response);
            }
            catch (Exception)
            {
                throw;
            }
        }
        public override PopulateActivityResponse ProcessRequest(PopulateActivityRequest request)
        {
            PopulateActivityResponse response = new PopulateActivityResponse();

            try
            {
                using (var uow = new SptUnitOfWork())
                {
                    string username = AuthContext.Instance.UserName;
                    var    user     = uow.UserRepository.GetByUserName(username);

                    var             activity     = uow.ActivityRepository.FindById(request.ActivityId);
                    SptUserActivity userActivity = new SptUserActivity
                    {
                        SptUser   = user,
                        Activity  = activity,
                        StartDate = DateTime.Now
                    };

                    var wordSpeakers = uow.WordSpeakerRepository.GetAll();
                    if (activity.IsTest)
                    {
                        wordSpeakers = wordSpeakers
                                       .Where(t => t.Word.TestOnly && t.Speaker.TestOnly == false)
                                       .Union(wordSpeakers.Where(t => t.Word.TestOnly == false)).OrderBy(t => Guid.NewGuid());
                        // wordSpeakers = wordSpeakers.OrderBy(t => Guid.NewGuid());
                    }
                    else
                    {
                        wordSpeakers = wordSpeakers.Where(t => t.Speaker.TestOnly == false && t.Word.TestOnly == false).OrderBy(t => Guid.NewGuid());
                    }

                    foreach (var ws in wordSpeakers)
                    {
                        userActivity.SptUserActivityDetails.Add(new SptUserActivityDetail
                        {
                            SptUserActivity = userActivity,
                            WordSpeaker     = ws
                        });
                    }

                    uow.UserActivityRepository.Add(userActivity);
                    uow.Save();
                }

                return(response);
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 6
0
        public override GetNextWordResponse ProcessRequest(GetNextWordRequest request)
        {
            GetNextWordResponse response = new GetNextWordResponse();

            try
            {
                using (var uow = new SptUnitOfWork())
                {
                    string username = AuthContext.Instance.UserName;
                    var    user     = uow.UserRepository.GetByUserName(username);

                    var activity           = uow.ActivityRepository.FindBy(t => t.Id == request.ActivityId && t.ActivitySession == request.Session).First();
                    var userActivityDetail = user.SptUserActivities.Where(t => t.ActivityId == activity.Id).First().SptUserActivityDetails.ToList();
                    var remainder          = userActivityDetail.Where(t => t.Result == null);
                    var nextItem           = remainder.OrderBy(t => t.Id).FirstOrDefault();

                    if (nextItem != null)
                    {
                        response.QNo    = userActivityDetail.IndexOf(nextItem) + 1;
                        response.QCount = userActivityDetail.Count();
                        Word word = nextItem.WordSpeaker.Word;
                        response.QuestionId = nextItem.Id;
                        List <string> words = new List <string> {
                            word.WordEntry, word.Pair.WordEntry
                        };
                        response.Words    = words.OrderBy(t => Guid.NewGuid()).ToList();
                        response.FileName = nextItem.WordSpeaker.FileName;
                    }
                    else
                    {
                        response = null;
                    }
                }

                return(response);
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 7
0
        public override GetUserProfileResponse ProcessRequest()
        {
            var response = new GetUserProfileResponse();

            try
            {
                using (var uow = new SptUnitOfWork())
                {
                    string username = AuthContext.Instance.UserName;
                    var    user     = uow.UserRepository.GetByUserName(username);
                    response.Email     = user.Username;
                    response.FirstName = user.Person.FirstName;
                    response.LastName  = user.Person.LastName;
                }

                return(response);
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 8
0
        public override HeaderResponse ProcessRequest()
        {
            var response = new HeaderResponse();

            try
            {
                using (var uow = new SptUnitOfWork())
                {
                    var username = AuthContext.Instance.UserName;
                    var user     = uow.UserRepository.GetByUserName(username);

                    response.Username = user.Person.FullName;
                    response.Image    = null;
                }

                return(response);
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 9
0
        public override UpdateProfileResponse ProcessRequest(UpdateProfileRequest request)
        {
            UpdateProfileResponse response = new UpdateProfileResponse();

            try
            {
                using (var uow = new SptUnitOfWork())
                {
                    var username = AuthContext.Instance.UserName;
                    var user     = uow.UserRepository.GetByUserName(username);
                    user.Person.FirstName = request.FirstName;
                    user.Person.LastName  = request.LastName;
                    uow.UserRepository.Edit(user);
                    uow.Save();
                }

                return(response);
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 10
0
        public override GetTestResultResponse ProcessRequest()
        {
            GetTestResultResponse response = new GetTestResultResponse();

            try
            {
                using (var uow = new SptUnitOfWork())
                {
                    string username = AuthContext.Instance.UserName;

                    var latestActivity = uow.UserActivityRepository.FindBy(t => t.SptUser.Username == username && t.FinishDate != null).OrderByDescending(t => t.FinishDate).FirstOrDefault();
                    if (latestActivity != null)
                    {
                        if (latestActivity.Activity.IsTest)
                        {
                            response.Total    = latestActivity.SptUserActivityDetails.Count();
                            response.Corrects = latestActivity.SptUserActivityDetails.Where(t => t.Result == true).Count();
                            response.Wrongs   = response.Total - response.Corrects;
                        }
                        else
                        {
                            response = null;
                        }
                    }
                    else
                    {
                        response = null;
                    }
                }

                return(response);
            }
            catch (Exception)
            {
                throw;
            }
        }
        public override UpdateQuestionResponse ProcessRequest(UpdateQuestionRequest request)
        {
            UpdateQuestionResponse response = new UpdateQuestionResponse();

            try
            {
                using (var uow = new SptUnitOfWork())
                {
                    var question = uow.UserActivityDetailRepository.FindById(request.QuestionId);
                    if (question.WordSpeaker.Word.WordEntry == request.ChosenWord)
                    {
                        question.Result        = true;
                        response.Result        = true;
                        response.FileNameOne   = null;
                        response.FileNameTwo   = null;
                        response.CFFileNameOne = null;
                        response.CFFileNameTwo = null;
                    }
                    else
                    {
                        response.Result = false;
                        question.Result = false;

                        response.FileNameOne = question.WordSpeaker.FileName;
                        response.FileNameTwo = uow.WordSpeakerRepository.FindBy(t => t.Word.Id == question.WordSpeaker.Word.Pair.Id && t.Speaker.Id == question.WordSpeaker.Speaker.Id).Single().FileName;

                        var speaker = question.WordSpeaker.Speaker;
                        if (speaker.SpeakerName.Contains("M"))
                        {
                            speaker = uow.SpeakerRepository.FindBy(t => t.SpeakerName == speaker.SpeakerName.Replace("M", "F")).Single();
                        }
                        else
                        {
                            speaker = uow.SpeakerRepository.FindBy(t => t.SpeakerName == speaker.SpeakerName.Replace("F", "M")).Single();
                        }

                        var cFTypeSpeaker = uow.CFTypeSpeakerRepository.FindBy(t => t.Speaker.Id == speaker.Id && t.CFType.Id == question.SptUserActivity.SptUser.Person.CFType.Id).FirstOrDefault();
                        response.CFFileNameOne = cFTypeSpeaker != null ? cFTypeSpeaker.FileName1 : null;
                        response.CFFileNameTwo = cFTypeSpeaker != null ? cFTypeSpeaker.FileName2 : null;
                    }

                    uow.UserActivityDetailRepository.Edit(question);
                    uow.Save();

                    if (uow.UserActivityDetailRepository.FindBy(t => t.UserActivityId == question.UserActivityId && t.Result == null).Count() == 0)
                    {
                        var userActivity = uow.UserActivityRepository.FindBy(t => t.Id == question.UserActivityId).First();
                        userActivity.FinishDate = DateTime.Now;
                        uow.UserActivityRepository.Edit(userActivity);
                        uow.Save();
                    }
                }

                return(response);
            }
            catch (Exception ex)
            {
                using (SptUnitOfWork cLog = new SptUnitOfWork())
                {
                    EventLog log = new EventLog
                    {
                        EventType    = "Error",
                        Source       = ex.Source,
                        MessageOne   = ex.Message,
                        MessageTwo   = ex.InnerException == null ? null : ex.InnerException.Message,
                        MessageThree = ex.InnerException == null ? null : ex.InnerException.InnerException == null ? null : ex.InnerException.InnerException.Message,
                        StackTrace   = ex.StackTrace
                    };

                    cLog.EventLogRepository.Add(log);
                    cLog.Save();
                }
                throw;
            }
        }
Esempio n. 12
0
        public override SeedDataResponse ProcessRequest()
        {
            var uow = new SptUnitOfWork();
            SeedDataResponse response = new SeedDataResponse();

            try
            {
                // add speakers
                var speakers = new List <Speaker>();
                speakers.Add(new Speaker {
                    SpeakerName = "M1", TestOnly = false
                });
                speakers.Add(new Speaker {
                    SpeakerName = "F1", TestOnly = false
                });
                speakers.Add(new Speaker {
                    SpeakerName = "M2", TestOnly = true
                });
                speakers.Add(new Speaker {
                    SpeakerName = "F2", TestOnly = true
                });
                uow.SpeakerRepository.AddRange(speakers);
                uow.Save();

                // add CFType
                var cFTypes = new List <CFType>();
                cFTypes.Add(new CFType {
                    CFTypeName = "Target"
                });
                cFTypes.Add(new CFType {
                    CFTypeName = "NonTarget"
                });
                cFTypes.Add(new CFType {
                    CFTypeName = "Combination"
                });
                uow.CFTypeRepository.AddRange(cFTypes);
                uow.Save();

                // add CFTypeSpeakers
                var cFTypeSpeakers   = new List <CFTypeSpeaker>();
                var trainingSpeakers = uow.SpeakerRepository.FindBy(t => t.TestOnly == false).ToList();
                var singleCF         = uow.CFTypeRepository.GetAll().ToList().Take(2).ToList();
                var combinedCF       = uow.CFTypeRepository.GetAll().ToList().Last();

                singleCF.ForEach(t => trainingSpeakers.ForEach(p => cFTypeSpeakers.Add(new CFTypeSpeaker {
                    CFType = t, Speaker = p, FileName1 = t.CFTypeName + p.SpeakerName + ".mp3"
                })));
                trainingSpeakers.ForEach(p => cFTypeSpeakers.Add(new CFTypeSpeaker {
                    CFType = combinedCF, Speaker = p, FileName1 = combinedCF.CFTypeName + p.SpeakerName + "P1.mp3", FileName2 = combinedCF.CFTypeName + p.SpeakerName + "P2.mp3"
                }));
                uow.CFTypeSpeakerRepository.AddRange(cFTypeSpeakers);
                uow.Save();

                // add user and pesrson
                var users = new List <SptUser>();
                users.Add(new SptUser
                {
                    Username = "******",
                    Password = "******",
                    IsAdmin  = true,
                    Person   = new Person
                    {
                        FirstName        = "Shilan",
                        LastName         = "Shebli",
                        Gender           = "F",
                        AgeGroup         = Person.AgeGroupEnum.GrpAbove15,
                        ProficiencyLevel = Person.ProficiencyLevelEnum.Beginner,
                        CFType           = uow.CFTypeRepository.FindById(1)
                    }
                });

                users.Add(new SptUser
                {
                    Username = "******",
                    Password = "******",
                    IsAdmin  = true,
                    Person   = new Person
                    {
                        FirstName        = "Siavash",
                        LastName         = "Rostami",
                        Gender           = "M",
                        AgeGroup         = Person.AgeGroupEnum.GrpAbove15,
                        ProficiencyLevel = Person.ProficiencyLevelEnum.Beginner,
                        CFType           = uow.CFTypeRepository.FindById(2)
                    }
                });

                uow.UserRepository.AddRange(users);
                uow.Save();

                // add activities
                var activities = new List <Activity>();
                activities.Add(new Activity {
                    ActivityOrder = 1, ActivityName = "PreTest", ActivitySession = 1, IsTest = true, ActivityTitle = "Pretest", ActivityDesc = "You may Press the play button to hear the pronunciation of a word<br/>then choose the correct written form between the options below.<br/>You can only play once before pressing the answer."
                });
                activities.Add(new Activity {
                    ActivityOrder = 2, ActivityName = "Training", ActivitySession = 1, IsTest = false, ActivityTitle = "Training  - Session 1", ActivityDesc = "You may Press the play button to hear the pronunciation of a word<br/>then choose the correct written form between the options below.<br/>You can play as many times as you need before pressing the answer.<br/>If you pick the wrong answer, you will be presented with an auditory feedback."
                });
                activities.Add(new Activity {
                    ActivityOrder = 3, ActivityName = "Training", ActivitySession = 2, IsTest = false, ActivityTitle = "Training  - Session 2", ActivityDesc = "You may Press the play button to hear the pronunciation of a word<br/>then choose the correct written form between the options below.<br/>You can play as many times as you need before pressing the answer.<br/>If you pick the wrong answer, you will be presented with an auditory feedback."
                });
                activities.Add(new Activity {
                    ActivityOrder = 4, ActivityName = "Training", ActivitySession = 3, IsTest = false, ActivityTitle = "Training  - Session 3", ActivityDesc = "You may Press the play button to hear the pronunciation of a word<br/>then choose the correct written form between the options below.<br/>You can play as many times as you need before pressing the answer.<br/>If you pick the wrong answer, you will be presented with an auditory feedback."
                });
                activities.Add(new Activity {
                    ActivityOrder = 5, ActivityName = "Training", ActivitySession = 4, IsTest = false, ActivityTitle = "Training  - Session 4", ActivityDesc = "You may Press the play button to hear the pronunciation of a word<br/>then choose the correct written form between the options below.<br/>You can play as many times as you need before pressing the answer.<br/>If you pick the wrong answer, you will be presented with an auditory feedback."
                });
                activities.Add(new Activity {
                    ActivityOrder = 6, ActivityName = "Training", ActivitySession = 5, IsTest = false, ActivityTitle = "Training  - Session 5", ActivityDesc = "You may Press the play button to hear the pronunciation of a word<br/>then choose the correct written form between the options below.<br/>You can play as many times as you need before pressing the answer.<br/>If you pick the wrong answer, you will be presented with an auditory feedback."
                });
                activities.Add(new Activity {
                    ActivityOrder = 7, ActivityName = "Training", ActivitySession = 6, IsTest = false, ActivityTitle = "Training  - Session 6", ActivityDesc = "You may Press the play button to hear the pronunciation of a word<br/>then choose the correct written form between the options below.<br/>You can play as many times as you need before pressing the answer.<br/>If you pick the wrong answer, you will be presented with an auditory feedback."
                });
                activities.Add(new Activity {
                    ActivityOrder = 8, ActivityName = "PostTest", ActivitySession = 1, IsTest = true, ActivityTitle = "Posttest", ActivityDesc = "You may Press the play button to hear the pronunciation of a word<br/>then choose the correct written form between the options below.<br/>You can only play once before pressing the answer."
                });
                uow.ActivityRepository.AddRange(activities);
                uow.Save();

                // add Words and WordSpeakers

                // Set 1, familiar
                AddWordPair(uow, "Bet", "Bert", Word.SoundGroupEnum.Set1, false);
                AddWordPair(uow, "Bed", "bird", Word.SoundGroupEnum.Set1, false);
                AddWordPair(uow, "Ten", "Turn", Word.SoundGroupEnum.Set1, false);
                AddWordPair(uow, "Hell", "Hurl", Word.SoundGroupEnum.Set1, false);
                AddWordPair(uow, "Nest", "Nursed", Word.SoundGroupEnum.Set1, false);
                AddWordPair(uow, "Bled", "Blurred", Word.SoundGroupEnum.Set1, false);
                AddWordPair(uow, "Best", "Burst", Word.SoundGroupEnum.Set1, false);
                // set 1, unfamiliar
                AddWordPair(uow, "Well", "Whirl", Word.SoundGroupEnum.Set1, true);
                AddWordPair(uow, "End", "Earned", Word.SoundGroupEnum.Set1, true);
                AddWordPair(uow, "Spend", "Spurned", Word.SoundGroupEnum.Set1, true);


                // Set 2, familiar
                AddWordPair(uow, "Ship", "Sheep", Word.SoundGroupEnum.Set2, false);
                AddWordPair(uow, "Fit", "Feet", Word.SoundGroupEnum.Set2, false);
                AddWordPair(uow, "Bit", "Beat", Word.SoundGroupEnum.Set2, false);
                AddWordPair(uow, "Rich", "Reach", Word.SoundGroupEnum.Set2, false);
                AddWordPair(uow, "Itch", "Each", Word.SoundGroupEnum.Set2, false);
                AddWordPair(uow, "Chick", "Cheek", Word.SoundGroupEnum.Set2, false);
                AddWordPair(uow, "Dip", "Deep", Word.SoundGroupEnum.Set2, false);
                // set 2, unfamiliar
                AddWordPair(uow, "Fizz", "Fees", Word.SoundGroupEnum.Set2, true);
                AddWordPair(uow, "Hip", "Heap", Word.SoundGroupEnum.Set2, true);
                AddWordPair(uow, "Pill", "Peel", Word.SoundGroupEnum.Set2, true);


                // Set 3, familiar
                AddWordPair(uow, "Pull", "Pool", Word.SoundGroupEnum.Set3, false);
                AddWordPair(uow, "Wood", "Would", Word.SoundGroupEnum.Set3, false);
                AddWordPair(uow, "Soot", "Suit", Word.SoundGroupEnum.Set3, false);
                AddWordPair(uow, "Pulls", "Pools", Word.SoundGroupEnum.Set3, false);
                AddWordPair(uow, "Food", "Foot", Word.SoundGroupEnum.Set3, false);
                AddWordPair(uow, "Kook", "Cook", Word.SoundGroupEnum.Set3, false);
                AddWordPair(uow, "Luke", "Look", Word.SoundGroupEnum.Set3, false);
                // set 3, unfamiliar
                AddWordPair(uow, "Boole", "Bull", Word.SoundGroupEnum.Set3, true);
                AddWordPair(uow, "Stewed", "Stood", Word.SoundGroupEnum.Set3, true);
                AddWordPair(uow, "Gooed", "Good", Word.SoundGroupEnum.Set3, true);


                // Set 4, familiar
                AddWordPair(uow, "O", "Or", Word.SoundGroupEnum.Set4, false);
                AddWordPair(uow, "Code", "Cord", Word.SoundGroupEnum.Set4, false);
                AddWordPair(uow, "Doze", "Doors", Word.SoundGroupEnum.Set4, false);
                AddWordPair(uow, "Foam", "Form", Word.SoundGroupEnum.Set4, false);
                AddWordPair(uow, "Goal", "Gall", Word.SoundGroupEnum.Set4, false);
                AddWordPair(uow, "Load", "Lord", Word.SoundGroupEnum.Set4, false);
                AddWordPair(uow, "Moan", "Mourn", Word.SoundGroupEnum.Set4, false);
                // set 4, unfamiliar
                AddWordPair(uow, "Motor", "Mortar", Word.SoundGroupEnum.Set4, true);
                AddWordPair(uow, "Mow", "More", Word.SoundGroupEnum.Set4, true);
                AddWordPair(uow, "Oat", "Ought", Word.SoundGroupEnum.Set4, true);

                uow.Dispose();
                return(response);
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 13
0
        public override GetIndicatorsResponse ProcessRequest()
        {
            var response = new GetIndicatorsResponse();

            try
            {
                using (var uow = new SptUnitOfWork())
                {
                    var username       = AuthContext.Instance.UserName;
                    var user           = uow.UserRepository.GetByUserName(username);
                    var userActivities = user.SptUserActivities;

                    var    acts     = uow.ActivityRepository.GetAll().OrderBy(t => t.ActivityOrder).ToList();
                    var    last     = userActivities.OrderByDescending(o => o.Activity.ActivityOrder).FirstOrDefault();
                    string ActRoute = string.Empty;
                    acts.ForEach(t =>
                    {
                        switch (t.ActivityName)
                        {
                        case "PreTest":
                            ActRoute = "app.activity.pretest";
                            break;

                        case "Training":
                            ActRoute = "app.activity.training";
                            break;

                        case "PostTest":
                            ActRoute = "app.activity.posttest";
                            break;
                        }
                        GetIndicatorsResponse.Indicator indicator = new GetIndicatorsResponse.Indicator {
                            Route = ActRoute, Title = t.ActivityTitle
                        };
                        if (userActivities.Where(p => p.Activity.Id == t.Id && p.FinishDate != null).Any())
                        {
                            indicator.Style    = "completed";
                            indicator.IsActive = false;
                        }
                        else if (userActivities.Where(p => p.Activity.Id == t.Id && p.FinishDate == null).Any())
                        {
                            indicator.Style    = "active";
                            indicator.IsActive = true;
                        }
                        else
                        {
                            if (last != null)
                            {
                                indicator.IsActive = last.FinishDate != null && last.Activity.ActivityOrder == t.ActivityOrder - 1;
                            }
                            else
                            {
                                indicator.IsActive = t.ActivityOrder == 1;
                            }
                            indicator.Style = "";
                        }
                        response.Indicators.Add(indicator);
                    });
                }

                return(response);
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 14
0
        public override RegisterResponse ProcessRequest(RegisterRequest request)
        {
            var uow = new SptUnitOfWork();
            RegisterResponse response = new RegisterResponse();

            try
            {
                if (uow.UserRepository.FindBy(t => t.Username == request.Email).Any())
                {
                    throw new Exception("Email address is not available!");
                }

                var cfs =
                    from c in uow.CFTypeRepository.GetAll()
                    join p in uow.PersonRepository.FindBy(t => t.AgeGroup == (Person.AgeGroupEnum)request.AgeGroup && t.ProficiencyLevel == (Person.ProficiencyLevelEnum)request.ProficiencyLevel) on c.Id equals p.CFType.Id into ps
                    from q in ps.DefaultIfEmpty()
                    select new { cf = c, cnt = q.CFType != null?ps.Count(t => t.CFType.Id == c.Id) : 0 };

                var next = cfs.OrderBy(t => t.cnt).ThenBy(t => t.cf.Id).First().cf;

                SptUser user = new SptUser
                {
                    Username = request.Email,
                    Password = request.Password,
                    IsAdmin  = false,
                    Person   = new Person
                    {
                        FirstName        = request.FirstName,
                        LastName         = request.LastName,
                        Gender           = request.Gender,
                        AgeGroup         = (Person.AgeGroupEnum)request.AgeGroup,
                        ProficiencyLevel = (Person.ProficiencyLevelEnum)request.ProficiencyLevel,
                        CFType           = next
                    }
                };

                uow.UserRepository.Add(user);
                uow.Save();
                uow.Dispose();

                try
                {
                    StringBuilder sb = new StringBuilder();
                    sb.Append("Dear {0},");
                    sb.Append("\n\nThank you for registering for the Oratio speech perception training.");
                    sb.Append("\n\n\tYour username : {1}");
                    sb.Append("\n\tYour password : {2}");
                    sb.Append("\n\nYou can sign in and start using your credentials straight away.");
                    sb.Append("\nIf you have any questions please contact support at [email protected].");
                    sb.Append("\n\nBest regards,");
                    sb.Append("\nOratio");
                    sb.Append("\n[" + DateTime.Now + "]");

                    string body = string.Format(sb.ToString(), request.FirstName, request.Email, request.Password);
                    // MailHleper.Instance.SendMail(request.Email, "Welcome to Oratio!", body);
                }
                catch (Exception) {}

                return(response);
            }
            catch (Exception)
            {
                throw;
            }
        }