コード例 #1
0
        public async Task <IActionResult> ResponseAsync(IFormCollection answer)
        {
            ApplicationUser applicationUser = await _userManager.GetUserAsync(HttpContext.User);

            var userId = applicationUser.Id;

            var listOfAnswers = new List <Answer>();

            for (int i = 0; i < (answer.Count - 2) / 2; i++)
            {
                var    answerGuid = Guid.NewGuid();
                string questionId = $"{i} questionId";
                string value      = $"{i}";
                listOfAnswers.Add(new Answer {
                    AnswerId = answerGuid, MarketResearchId = Guid.Parse(answer["marketId"]), PersonId = userId, QuestionId = Guid.Parse(answer[questionId]), Value = answer[value],
                });
            }

            int result = await _dataAccessQuestions.AddAnswers(listOfAnswers);


            Responders responders = _context.Responders.SingleOrDefault(x => x.MarketResearchId == listOfAnswers[0].MarketResearchId && x.PersonId == listOfAnswers[0].PersonId);

            responders.MarketResearchCompleted = true;
            _context.Responders.Update(responders);
            await _context.SaveChangesAsync();

            var thankyouVm = new ThankYouResponderVm();

            //thankyouVm.Organization= await _context.Organizations.Include(x=>x.MarketResearches).SingleAsync(x=>x.OrganizationId==)
            thankyouVm.Person = await _context.Persons.SingleAsync(x => x.PersonId == userId);

            //thankyouVm.MarketResearch=await _context.MarketResearches.SingleAsync(x=>x.MarketResearchId)
            return(View(thankyouVm));
        }
コード例 #2
0
        public static void Register <T> (Action <T> responder)
        {
            if (responder == null)
            {
                throw new ArgumentNullException("responder");
            }

            Action <object> realResponder;

            if (SynchronizationContext.Current == null)
            {
                realResponder = o => responder((T)o);
            }
            else
            {
                SynchronizationContext context = SynchronizationContext.Current;
                realResponder = o => {
                    context.Send(s => responder((T)s), o);
                };
            }

            List <Action <object> > respondersForType = Responders.GetOrAdd(typeof(T), t => new List <Action <object> >());

            lock (respondersForType)
                respondersForType.Add(realResponder);
        }
コード例 #3
0
 public bool AnyEntities()
 {
     return((Activities != null && Activities.Any()) ||
            (MoodPrompts != null && MoodPrompts.Any()) ||
            (Responders != null && Responders.Any()) ||
            (MoodResponses != null && MoodResponses.Any()));
 }
コード例 #4
0
ファイル: BamServer.cs プロジェクト: dekkerb115/Bam.Net
 public void SubscribeToNotResponded(ResponderEventHandler subscriber)
 {
     Responders.Each(r =>
     {
         r.NotResponded += subscriber;
     });
 }
コード例 #5
0
        public void ResetModel()
        {
            var newRequests = new ObservableCollection <ResponderRequestModel>(Responders.Select(responderRequest => new ResponderRequestModel(responderRequest.DepartmentType)));

            Responders        = newRequests;
            FullyAttendedTime = null;
            ReceivedTime      = DateTime.Now;
        }
コード例 #6
0
        public void ResetModel()
        {
            var newRequests = Responders.Select(responderRequest => new ResponderRequestModel(responderRequest.DepartmentType)).ToList();

            Responders        = newRequests;
            FullyAttendedTime = null;
            ReceivedTime      = DateTime.Now;
        }
コード例 #7
0
ファイル: Module.cs プロジェクト: mastoj/Glimpse
        private void ComposePlugins()
        {
            var directoryCatalog = new DirectoryCatalog("bin");

            Container = new CompositionContainer(directoryCatalog);
            Container.ComposeParts(this, Responders);

            //wireup converters into serializer
            Responders.RegisterConverters();
        }
コード例 #8
0
        protected override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            var responder = Responders.FirstOrDefault(i => i.Matcher(request, i.State));

            if (responder == null)
            {
                Assert.Fail($"responder was not found that matched the request: {request}");
            }
            return(Task.FromResult(responder.MockResponse(request, responder.State)));
        }
コード例 #9
0
        public IActionResult ShowQuestionsForResponder(Responders responders)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            var viewModelAllQuestions = GetQuestions(responders.MarketResearchId);

            return(View(viewModelAllQuestions));
        }
コード例 #10
0
ファイル: BamServer.cs プロジェクト: ThreeHeadz/Bam.Net
 public void SubscribeToNotResponded <T>(ResponderEventHandler subscriber) where T : class, IResponder
 {
     Responders.Each(r =>
     {
         T responder = r as T;
         if (responder != null)
         {
             responder.NotResponded += subscriber;
         }
     });
 }
コード例 #11
0
        private static void PreSendRequestHeaders(object sender, EventArgs e)
        {
            HttpApplication httpApplication;

            if (!sender.IsValidRequest(out httpApplication, Configuration, true))
            {
                return;
            }

            var json = Responders.StandardResponse(httpApplication);

            Persist(json, httpApplication);
        }
コード例 #12
0
ファイル: Broker.cs プロジェクト: maxidea1024/hprose-dotnet
 protected void Response(string id)
 {
     if (Responders.TryGetValue(id, out var responder))
     {
         if (responder != null)
         {
             if (Send(id, responder))
             {
                 Responders.TryUpdate(id, null, responder);
             }
         }
     }
 }
コード例 #13
0
        public static void Send <T> (T message)
        {
            List <Action <object> > respondersForType;

            if (!Responders.TryGetValue(typeof(T), out respondersForType))
            {
                return;
            }

            lock (respondersForType) {
                foreach (Action <object> action in respondersForType)
                {
                    action(message);
                }
            }
        }
コード例 #14
0
        private void ComposePlugins()
        {
            var aggregateCatalog           = new AggregateCatalog();
            var assemblyCatalog            = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var directoryCatalog           = new DirectoryCatalog(@"\");
            var configuredDirectoryCatalog = new DirectoryCatalog(Configuration.PluginPath);

            aggregateCatalog.Catalogs.Add(assemblyCatalog);
            aggregateCatalog.Catalogs.Add(directoryCatalog);
            aggregateCatalog.Catalogs.Add(configuredDirectoryCatalog);

            Container = new CompositionContainer(aggregateCatalog);
            Container.ComposeParts(this, Responders);

            //wireup converters into serializer
            Responders.RegisterConverters();
        }
コード例 #15
0
ファイル: Module.cs プロジェクト: jeffsheldon/Glimpse
        private void ComposePlugins(HttpApplication application)
        {
            var batch = new CompositionBatch();

            Container.ComposeParts(this, Responders);

            Container.Compose(batch);

            Plugins = Container.GetExports <IGlimpsePlugin, IGlimpsePluginRequirements>();

            var store = application.Context.GetWarnings();

            store.AddRange(DirectoryCatalog.Exceptions.Select(exception => new ExceptionWarning(exception)));

            //wireup converters into serializer
            Responders.RegisterConverters();
        }
コード例 #16
0
            private void ComposePlugins(HttpApplication context)
            {
                var directoryCatalog = new SafeDirectoryCatalog("bin");

                Container = new CompositionContainer(directoryCatalog);
                Container.ComposeParts(this, Responders);

                var store = context.GetWarningStore();

                foreach (var exception in directoryCatalog.Exceptions)
                {
                    store.Add(new[] { exception.GetType().Name, exception.Message });
                }

                //wireup converters into serializer
                Responders.RegisterConverters();
            }
コード例 #17
0
        private static void BeginRequest(object sender, EventArgs e)
        {
            HttpApplication httpApplication;

            if (!sender.IsValidRequest(out httpApplication, Configuration, false, false))
            {
                return;
            }

            var responder = Responders.GetResponderFor(httpApplication);

            if (responder != null)
            {
                responder.Respond(httpApplication, Configuration);
                return;
            }

            httpApplication.InitGlimpseContext();
        }
コード例 #18
0
ファイル: Module.cs プロジェクト: mastoj/Glimpse
        private void BeginRequest(object sender, EventArgs e)
        {
            HttpApplication httpApplication;

            if (!sender.IsValidRequest(out httpApplication, Configuration, false, false))
            {
                return;
            }

            var responder = Responders.GetResponderFor(httpApplication);

            if (responder != null)
            {
                responder.Respond(httpApplication, Configuration);
                return;
            }

            httpApplication.SetData(new Dictionary <string, object>());
        }
コード例 #19
0
ファイル: Broker.cs プロジェクト: maxidea1024/hprose-dotnet
        protected async Task <Dictionary <string, Message[]> > Message(ServiceContext context)
        {
            var id = GetId(context);

            if (Responders.TryRemove(id, out var responder))
            {
                responder?.TrySetResult(null);
            }
            if (Timers.TryRemove(id, out var timer))
            {
                timer.TrySetResult(false);
            }
            responder = new TaskCompletionSource <Dictionary <string, Message[]> >();
            if (!Send(id, responder))
            {
                Responders.AddOrUpdate(id, responder, (_, oldResponder) => {
                    oldResponder?.TrySetResult(null);
                    return(responder);
                });
                if (Timeout > TimeSpan.Zero)
                {
                    using (CancellationTokenSource source = new CancellationTokenSource()) {
#if NET40
                        var delay = TaskEx.Delay(Timeout, source.Token);
                        var task  = await TaskEx.WhenAny(responder.Task, delay).ConfigureAwait(false);
#else
                        var delay = Task.Delay(Timeout, source.Token);
                        var task  = await Task.WhenAny(responder.Task, delay).ConfigureAwait(false);
#endif
                        source.Cancel();
                        if (task == delay)
                        {
                            responder.TrySetResult(emptyMessage);
                            DoHeartBeat(id);
                        }
                    }
                }
            }
            return(await responder.Task.ConfigureAwait(false));
        }
コード例 #20
0
        internal async Task GetRespondersToMarketResearch(MarketResearch marketResearch)
        {
            List <Person> respondersToFill = new List <Person>();

            if (_questionContext.Persons.ToList().Count != 0)
            {
                var responders = _questionContext.Persons.Where(x =>
                                                                //( marketResearch.Gender == null || marketResearch.Gender == x.Gender) &&
                                                                (marketResearch.MinAge == null || marketResearch.MinAge < x.Age) &&
                                                                (marketResearch.MaxAge == null || marketResearch.MaxAge > x.Age) &&
                                                                (marketResearch.OnGoing == true) && x.OrganizationId == null).ToList(); //&&
                //(marketResearch.Area == null || marketResearch.Area == x.City)).ToList();

                if (responders.Count < marketResearch.NumberOfResponders)
                {
                    int missingResponders = marketResearch.NumberOfResponders - responders.Count;

                    if (_questionContext.Persons.ToList().Count < missingResponders)
                    {
                        respondersToFill = _questionContext.Persons.ToList();
                        foreach (var resp in respondersToFill)
                        {
                            if (resp.OrganizationId == null)
                            {
                                responders.Add(resp);
                            }
                        }
                    }
                    else
                    {
                        for (int i = 0; i < missingResponders; i++)
                        {
                            respondersToFill = _questionContext.Persons.Where(x => x.OrganizationId == null).OrderBy(r => Guid.NewGuid()).Take(missingResponders).ToList();
                        }

                        foreach (var filInResponder in respondersToFill)
                        {
                            responders.Add(filInResponder);
                        }
                    }
                    foreach (var responder in responders)
                    {
                        var resp = new Responders();
                        resp.Persons                 = responder;
                        resp.MarketResearchs         = marketResearch;
                        resp.MarketResearchCompleted = false;
                        _questionContext.Add(resp);
                        await _questionContext.SaveChangesAsync();
                    }
                }
                else if (responders.Count == marketResearch.NumberOfResponders)
                {
                    foreach (var responder in responders)
                    {
                        var resp = new Responders();
                        resp.Persons                 = responder;
                        resp.MarketResearchs         = marketResearch;
                        resp.MarketResearchCompleted = false;
                        _questionContext.Add(resp);
                        await _questionContext.SaveChangesAsync();
                    }
                }
                else
                {
                    for (int i = 0; i < marketResearch.NumberOfResponders; i++)
                    {
                        var respondersToAdd = responders.OrderBy(r => Guid.NewGuid()).Take(marketResearch.NumberOfResponders).ToList();
                        foreach (var responder in respondersToAdd)
                        {
                            var resp = new Responders();
                            resp.Persons                 = responder;
                            resp.MarketResearchs         = marketResearch;
                            resp.MarketResearchCompleted = false;
                            _questionContext.Add(resp);
                            await _questionContext.SaveChangesAsync();
                        }
                    }
                }
            }
        }