Exemplo n.º 1
0
        public void OnNav(string destination)
        {
            DebugText        = "Current ViewModel changed ";
            expertViewModel  = null;
            studentViewModel = null;

            switch (destination)
            {
            case "Expert":
                expertViewModel        = new ExpertViewModel();
                CurrentViewModel       = expertViewModel;
                ExpertButtonIsEnabled  = false;
                StudentButtonIsEnabled = true;
                break;

            case "Student":
                studentViewModel       = new StudentViewModel();
                CurrentViewModel       = studentViewModel;
                ExpertButtonIsEnabled  = true;
                StudentButtonIsEnabled = false;
                break;

            case "MainWindow":
            default:
                CurrentViewModel = this;
                break;
            }
        }
Exemplo n.º 2
0
        public List <Survey> GetRequestedSurvey(ExpertViewModel e)
        {
            string query = "SELECT * FROM SURVEY AS S WHERE EXPERT_UNAME='" + e.EXPERT_UNAME +
                           "' AND S.SURVEY_ID NOT IN(SELECT R.SURVEY_ID FROM RECOMMEND AS R)";

            return(ConvertDataTable <Survey>(db.ExecuteReader(query)));
        }
Exemplo n.º 3
0
        public void InsertQual(ExpertViewModel e)
        {
            string StoredProcedureName             = StoredProcedures.InsertQualifications;
            Dictionary <string, object> Parameters = new Dictionary <string, object>();

            Parameters.Add("@USERNAME", e.EXPERT_UNAME);
            Parameters.Add("@QUALI", e.QUALIFICATIONS);
            db.ExecuteNonQuery_proc(StoredProcedureName, Parameters);
        }
Exemplo n.º 4
0
        public List <Survey> GetRequestedSurvey(ExpertViewModel e)
        {
            string storedProcedureName             = StoredProcedures.GetRequestedSurvey;
            Dictionary <string, object> Parameters = new Dictionary <string, object>();

            Parameters.Add("@ExpertName", e.EXPERT_UNAME);

            return(ConvertDataTable <Survey>(db.ExecuteReader_proc(storedProcedureName, Parameters)));
        }
        public ActionResult ApplyExpert(ExpertViewModel e)
        {
            if (ModelState.IsValid)
            {
                string Email = User.Identity.Name;
                db.InsertExpert(Email, e.BIO, e.QUALIFICATIONS, e.BYEAR);
                return(RedirectToAction("index", "home"));
            }

            return(View(e));
        }
        public ActionResult ApplyExpert()
        {
            string          Email = User.Identity.Name;
            ExpertViewModel e     = new ExpertViewModel();

            e.EXPERT_UNAME = db.GetUserName(Email);
            if (db.IsExpert(Email))
            {
                return(RedirectToAction("IsExpert", "Authorization"));
            }
            return(View(e));
        }
        public async Task <IActionResult> AddExpert(string email, string description, string projectId)
        {
            var profile = await _personalDataService.FindClientsByEmail(email);

            if (profile == null)
            {
                return(Json(new { Error = "User with this email does not exist!" }));
            }

            var expert = ExpertViewModel.Create(profile, projectId, description);

            try
            {
                await _projectExpertsRepository.SaveAsync(expert);
            }
            catch (Exception)
            {
                return(Json(new { Error = "This user is already an expert for this project!" }));
            }

            return(Json(expert));
        }
Exemplo n.º 8
0
        public async Task <IActionResult> Index(Guid appealId, int?key, string secretKey)
        {
            // Get chat session from database
            var chatSession = await chatRepository.GetChatSession(appealId);

            // Check if chat session is null
            if (chatSession == null)
            {
                return(NotFound("Сессии по данному идентификатору апеллянта не существует"));
            }

            // Set varable: current date less than start time of chat
            var isBefore = DateTime.Now < chatSession.StartTime;

            //
            var isAfter = DateTime.Now > chatSession.FinishTime;

            // Get member replacement from database
            var replacement = await chatRepository.GetReplacement(appealId);

            //
            var sessionModel = new SessionViewModel
            {
                AppealId   = appealId,
                Session    = chatSession,
                IsAfter    = isAfter,
                IsBefore   = isBefore,
                IsActive   = !isBefore && !isAfter && !chatSession.IsEarlyCompleted,
                IsReplaced = replacement?.OldMember != null
            };

            // Check if current date less than start time of chat
            if (isBefore)
            {
                return(View("Before", sessionModel));
            }

            //
            var clientType = key > 0 ? ContextType.Expert : ContextType.Appeal;

            //
            if (clientType == ContextType.Expert)
            {
                if (replacement?.OldMember == null)
                {
                    // Before expert replacement
                    if (chatSession.CurrentExpertKey == null)
                    {
                        chatSession.CurrentExpertKey = key;

                        if (!await chatRepository.UpdateSession(chatSession))
                        {
                            return(BadRequest("Не удалось обновить запись таблицы"));
                        }
                    }
                }
                else if (replacement.OldMember != key && replacement.ReplaceTime == null)
                {
                    // During expert replacement
                    if (replacement.NewMember == null)
                    {
                        replacement.NewMember = key;
                    }

                    //
                    replacement.ReplaceTime = DateTime.Now;

                    // Update member replacement
                    if (!await chatRepository.UpdateReplacement(replacement))
                    {
                        return(BadRequest("Не удалось обновить запись таблицы"));
                    }

                    //
                    var waitingTime = replacement.ReplaceTime.Value.Subtract(replacement.RequestTime.Value);

                    //
                    chatSession.FinishTime = chatSession.FinishTime.Add(waitingTime);

                    //
                    chatSession.CurrentExpertKey = key;

                    // Update session
                    if (!await chatRepository.UpdateSession(chatSession))
                    {
                        return(BadRequest("Не удалось обновить запись таблицы"));
                    }

                    //
                    await chatContext.Clients.User(appealId.ToString()).CompleteChange(key);
                }

                //
                if (key != chatSession.CurrentExpertKey)
                {
                    sessionModel.IsActive = false;
                }

                //
                var expertModel = new ExpertViewModel
                {
                    SessionModel = sessionModel,
                    ExpertKey    = key,
                    Messages     = await chatRepository.GetChatMessages(appealId),
                    QuickReplies = await chatRepository.GetQuickReplies()
                };

                //
                return(View("Expert", expertModel));
            }
            else if (clientType == ContextType.Appeal)
            {
                // Check if current date more than chat finish time or chat has been early completed
                if (isAfter || chatSession.IsEarlyCompleted)
                {
                    return(View("After", sessionModel));
                }

                //
                var isWaiting = replacement?.OldMember != null && replacement?.NewMember == null;

                //
                var appealModel = new AppealViewModel
                {
                    SessionModel = sessionModel,
                    Messages     = await chatRepository.GetChatMessages(appealId),
                    IsWaiting    = isWaiting
                };

                //
                return(View("Appeal", appealModel));
            }

            return(BadRequest());
        }
Exemplo n.º 9
0
 public ActionResult InsertQual(ExpertViewModel e)
 {
     e.EXPERT_UNAME = (string)TempData["expert"];
     db.InsertQual(e);
     return(RedirectToAction("Index", "Home"));
 }