Exemple #1
0
        internal List <MarketResearch> SurveyByID(int researchID)
        {
            {
                var sql = @"SELECT [ResearchID], [CompanyID]
                        FROM MarketResarch 
                        WHERE ResearchID=@Id";

                using (SqlConnection connection = new SqlConnection(conString))
                    using (SqlCommand command = new SqlCommand(sql, connection))
                    {
                        connection.Open();
                        command.Parameters.Add(new SqlParameter("Id", researchID));
                        SqlDataReader         reader = command.ExecuteReader();
                        List <MarketResearch> mrlist = new List <MarketResearch>();
                        while (reader.Read())
                        {
                            var mr = new MarketResearch
                            {
                                researchID = reader.GetSqlInt32(0).Value,
                                companyID  = reader.GetSqlInt32(1).Value,
                            };
                            mrlist.Add(mr);
                        }
                        return(mrlist);
                    }
            }
        }
        public async Task <IActionResult> Edit(Guid id, [Bind("MarketResearchId,Name,Description,Purpose,MinAge,MaxAge,Gender,Area,CreationDate,StartDate,EndDate")] MarketResearch marketResearch)
        {
            if (id != marketResearch.MarketResearchId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(marketResearch);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!MarketResearchExists(marketResearch.MarketResearchId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(marketResearch));
        }
        public async Task <IActionResult> CreateQuestionsToMarketResearchDirectly([Bind("MarketResearchId,Name,Description,Purpose,MinAge,MaxAge,Gender,Area,CreationDate,StartDate,EndDate,NumberOfResponders, OnGoing")] MarketResearch marketResearch)
        {
            if (ModelState.IsValid)
            {
                marketResearch.MarketResearchId = Guid.NewGuid();

                ApplicationUser applicationUser = await _userManager.GetUserAsync(HttpContext.User);

                var userId = applicationUser.Id;

                await _accessQuestions.SetMarketResearchToPersonAndOrganizationAndSave(marketResearch, userId);


                await _accessQuestions.GetRespondersToMarketResearch(marketResearch);

                await _context.SaveChangesAsync();
            }

            var questionToMarketResearch = new AddQuestionToMarketResearchVm
            {
                CurrentMarketResearchId = marketResearch.MarketResearchId
            };

            return(RedirectToAction("Create", "Questions", questionToMarketResearch));
        }
        internal async Task SetMarketResearchToPersonAndOrganizationAndSave(MarketResearch marketResearch, Guid userId)
        {
            var person = await _questionContext.Persons.Include(x => x.MarketResearches).FirstAsync(x => x.PersonId == userId);

            var organization = await _questionContext.Organizations.Include(x => x.MarketResearches).FirstAsync(x => x.OrganizationId == person.OrganizationId);

            //if (marketResearch.StartDate>=DateTime.Now && marketResearch.EndDate <= DateTime.Now)  Sätter detta redan i klassen nu
            //{
            //    marketResearch.OnGoing = true;
            //}
            person.MarketResearches.Add(marketResearch);
            organization.MarketResearches.Add(marketResearch);

            _questionContext.Update(person);
            _questionContext.Update(organization);

            await _questionContext.SaveChangesAsync();
        }
        public async Task <IActionResult> Create(MarketResearch marketresearch)
        {
            if (ModelState.IsValid)
            {
                marketresearch.CreatedBy        = Convert.ToInt32(_session.GetInt32("MDnAloggedinuserid"));
                marketresearch.DateCreated      = DateTime.Now;
                marketresearch.LastModifiedBy   = Convert.ToInt32(_session.GetInt32("MDnAloggedinuserid"));
                marketresearch.DateLastModified = DateTime.Now;

                TempData["marketresearch"]   = "You have successfully added Meck Doramen And Associates's Market Research!!!";
                TempData["notificationType"] = NotificationType.Success.ToString();

                await _database.MarketResearches.AddAsync(marketresearch);

                await _database.SaveChangesAsync();

                return(Json(new { success = true }));
            }
            return(View(marketresearch));
        }
        public async Task <IActionResult> Create([Bind("MarketResearchId,Name,Description,Purpose,MinAge,MaxAge,Gender,Area,CreationDate,StartDate,EndDate, NumberOfResponders, OnGoing")] MarketResearch marketResearch)
        {
            if (ModelState.IsValid)
            {
                if (marketResearch.StartDate > marketResearch.EndDate)
                {
                    ModelState.AddModelError("Kallee", "Slutdatum tidigare än startdatum går inte");
                    return(View(marketResearch));
                }
                ApplicationUser applicationUser = await _userManager.GetUserAsync(HttpContext.User);

                var userId = applicationUser.Id;

                await _accessQuestions.SetMarketResearchToPersonAndOrganizationAndSave(marketResearch, userId);

                await _accessQuestions.GetRespondersToMarketResearch(marketResearch);

                return(RedirectToAction(nameof(GetMarketResearchesWithStatusOngoing)));
            }


            return(View(marketResearch));
        }
        public async Task <IActionResult> Edit(int?id, MarketResearch _marketResearch)
        {
            if (id != _marketResearch.MarketResearchId)
            {
                return(RedirectToAction("Index", "Error"));
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _marketResearch.DateLastModified = DateTime.Now;
                    _marketResearch.LastModifiedBy   = Convert.ToInt32(_session.GetInt32("MDnAloggedinuserid"));

                    _database.Update(_marketResearch);
                    await _database.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!MarketResearchExists(_marketResearch.MarketResearchId))
                    {
                        return(RedirectToAction("Index", "Error"));
                    }
                    else
                    {
                        throw;
                    }
                }
                TempData["marketresearch"]   = "You have successfully modified Meck Doramen And Associates's Market Research !!!";
                TempData["notificationType"] = NotificationType.Success.ToString();

                return(Json(new { success = true }));
            }

            return(View(_marketResearch));
        }
        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();
                        }
                    }
                }
            }
        }
        public IActionResult Create()
        {
            var _marketResearch = new MarketResearch();

            return(PartialView("Create", _marketResearch));
        }