Esempio n. 1
0
        public JsonResult SaveExaminationLogging(ExaminationLog examinationLog)
        {
            try
            {
                var token = _tokenValidator.Validate(HttpContext);
                if (!token.Success)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        NotAuthenticated = true,
                        Message = $"Unauthorized:-{token.Message}",
                    }));
                }
                _context.ExaminationLogs.Add(examinationLog);
                _context.SaveChanges();

                return(Json(new ReturnData <string>
                {
                    Success = true,
                    Message = "Logs save successfully"
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "There was a problem when saving logs " + ex.Message
                }));
            }
        }
Esempio n. 2
0
        public void PingPortals()
        {
            var  clientIps = ClientIpValues.GetClientIps();
            var  clientIp  = new ClientIp();
            Ping pinger    = new Ping();

            try
            {
                clientIps.ForEach(p => {
                    clientIp        = p;
                    var ip          = _context.ClientIp.FirstOrDefault(c => c.Ip.ToLower().Equals(clientIp.Ip.ToLower()));
                    PingReply reply = pinger.Send(p.Ip);
                    ip.Fails        = 0;
                });
                _context.SaveChanges();
            }
            catch (PingException)
            {
                var ip = _context.ClientIp.FirstOrDefault(c => c.Ip.ToLower().Equals(clientIp.Ip.ToLower()));
                if (ip.Fails < 2)
                {
                    ip.Fails = ip.Fails + 1;
                }
                else
                {
                    ip.Fails = 0;
                    //NotifyPortalDown(ip);
                }
                _context.SaveChanges();
            }
            pinger.Dispose();
        }
        public JsonResult GetUserRequests(string userCode, string searchText)
        {
            var token = _tokenValidator.Validate(HttpContext);

            if (!token.Success)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    NotAuthenticated = true,
                    Message = $"Unauthorized:-{token.Message}",
                }));
            }

            if (token.Role != Role.Staff)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    NotAuthenticated = true,
                    Message = "Sorry, you are not authorized to perform this action",
                }));
            }

            var surrenderReqs = new List <ImprestSurrenderReq>();

            try
            {
                surrenderReqs = _context.ImprestSurrenderReqs.Where(m => m.PayeeRef.Equals(userCode)).OrderByDescending(m => m.DateModified)
                                .ThenBy(m => m.ImpRef).ToList();
                foreach (var surReq in surrenderReqs)
                {
                    if (surReq.Status)
                    {
                        continue;
                    }
                    if (_unisolContext.ImprestSur.Any(m => m.ImpRef.Equals(surReq.ImpRef)))
                    {
                        surReq.Status = true;
                        _context.SaveChanges();
                    }
                }

                return(Json(new ReturnData <List <ImprestSurrenderReq> >
                {
                    Success = true,
                    Data = surrenderReqs,
                    Message = "user surrender requests retrieved"
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ReturnData <List <ImprestSurrenderReq> >
                {
                    Success = false,
                    Data = surrenderReqs,
                    Message = "Error occurred while processing your request"
                }));
            }
        }
Esempio n. 4
0
        public JsonResult ComposeMessage(PortalMessage messages, string senter, string receiver)
        {
            var token = _tokenValidator.Validate(HttpContext);

            if (!token.Success)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    NotAuthenticated = true,
                    Message = $"Unauthorized:-{token.Message}",
                }));
            }
            if (string.IsNullOrEmpty(receiver))
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "Please select message receipient"
                }));
            }

            if (string.IsNullOrEmpty(messages.Message))
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "Please provide a message"
                }));
            }

            try
            {
                var msgSenter     = _context.Users.FirstOrDefault(u => u.UserName == senter);
                var msgReceipient = _context.Users.FirstOrDefault(u => u.UserName == receiver);

                messages.ReceiverId    = msgReceipient.Id;
                messages.SenderId      = msgSenter.Id;
                messages.MessageStatus = MessageStatus.Sent;
                _context.PortalMessage.Add(messages);
                _context.SaveChanges();
                return(Json(new ReturnData <string>
                {
                    Success = true,
                    Message = "Message sent successfully"
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "An error occurred,please retry : " + ex.Message,
                    Error = new Error(ex)
                }));
            }
        }
Esempio n. 5
0
        public JsonResult Create(Settings request)
        {
            try
            {
                var token = _tokenValidator.Validate(HttpContext);
                if (!token.Success)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        NotAuthenticated = true,
                        Message = $"Unauthorized:-{token.Message}",
                    }));
                }
                var requiredFields = new List <Tuple <string, string, DataType> >
                {
                    Tuple.Create("name", request.Name, DataType.Default),
                    Tuple.Create("address", request.Name, DataType.Default),
                    Tuple.Create("themeColor", request.ThemeColor, DataType.Default),
                };

                var validation = _validateService.Validate(requiredFields);
                if (!validation.Valid)
                {
                    return(Json(new ReturnData <string>
                    {
                        Message = validation.Errors,
                        Success = false
                    }));
                }

                if (request.Id > 0)
                {
                    _context.Settings.Update(request);
                }
                else
                {
                    _context.Settings.Add(request);
                }

                _context.SaveChanges();

                return(Json(new ReturnData <string>
                {
                    Success = true,
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "An error occured, please try again",
                    Error = new Error(ex)
                }));
            }
        }
Esempio n. 6
0
        public JsonResult MissedPunch(MissedPunch punch)
        {
            try
            {
                punch.Status = "Pending";
                if (punch.PunchDate == null)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        Message = "Kindly, pick the missed punch"
                    }));
                }

                var missesPatchExist = _context.MissedPunch.Any(m => m.EmpNo.ToUpper().Equals(punch.EmpNo.ToUpper()) && m.PunchDate == punch.PunchDate);
                if (missesPatchExist)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        Message = "Sorry, missed punch already exist"
                    }));
                }

                var result   = _unisolApiProxy.GetStaffData(punch.EmpNo).Result;
                var response = new ProcessJsonReturnResults <dynamic>(result).UnisolApiData;
                punch.Supervisor = response.Data?.supervisor ?? "";

                _context.MissedPunch.Add(punch);
                _context.SaveChanges();

                if (string.IsNullOrEmpty(punch.Reason))
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        Message = "Kindly provide the reason"
                    }));
                }

                return(Json(new ReturnData <string>
                {
                    Success = true,
                    Message = "Submitted successfully"
                }));
            }
            catch (Exception)
            {
                return(Json(new ReturnData <string> {
                    Success = false,
                    Message = "Sorry, An error occurred"
                }));
            }
        }
Esempio n. 7
0
 public JsonResult DeleteUserGroup(int id)
 {
     try
     {
         var token = _tokenValidator.Validate(HttpContext);
         if (!token.Success)
         {
             return(Json(new ReturnData <string>
             {
                 Success = false,
                 NotAuthenticated = true,
                 Message = $"Unauthorized:-{token.Message}",
             }));
         }
         if (token.Role != Role.Admin)
         {
             return(Json(new ReturnData <string>
             {
                 Success = false,
                 NotAuthenticated = true,
                 Message = "Sorry, you are not authorized to perform this action",
             }));
         }
         var userGroup = _context.UserGroups.FirstOrDefault(u => u.Id == id);
         if (userGroup != null)
         {
             _context.UserGroups.Remove(userGroup);
             _context.SaveChanges();
             return(Json(new ReturnData <string>
             {
                 Success = true,
                 Message = "User group deleted successfully"
             }));
         }
         return(Json(new ReturnData <string>
         {
             Success = false,
             Message = "Could not delete user group"
         }));
     }
     catch (Exception ex)
     {
         return(Json(new ReturnData <string>
         {
             Success = false,
             Message = "Server error occured " + ex.Message
         }));
     }
 }
Esempio n. 8
0
        public JsonResult CreatePublication(Publication publication)
        {
            try
            {
                if (string.IsNullOrEmpty(publication.Title))
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        Message = "Kindly provide publication title"
                    }));
                }

                if (string.IsNullOrEmpty(publication.Type))
                {
                    return(Json(new ReturnData <string> {
                        Success = false,
                        Message = "Kindly provide publication type"
                    }));
                }

                if (string.IsNullOrEmpty(publication.Year))
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        Message = "Kindly provide publication year"
                    }));
                }

                _context.Publication.Add(publication);
                _context.SaveChanges();

                return(Json(new ReturnData <string>
                {
                    Success = true,
                    Message = "Publication saved successfully"
                }));
            }
            catch (Exception)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "Sorry, An error occurred"
                }));
            }
        }
Esempio n. 9
0
        public ReturnData <string> UploadDocument(string usercode, string operation, IFormFile fileDetails)
        {
            try
            {
                usercode = usercode ?? "";
                if (fileDetails == null || fileDetails.Length < 1)
                {
                    return new ReturnData <string>
                           {
                               Success = false,
                               Message = "Failed to upload the file"
                           }
                }
                ;

                var fileName = ContentDispositionHeaderValue.Parse(fileDetails.ContentDisposition).FileName.Trim('"');
                var endPoint = $"Documents\\{operation}\\{usercode}";

                var folderPath = Path.Combine(_env.WebRootPath, endPoint);
                if (!Directory.Exists(folderPath))
                {
                    Directory.CreateDirectory(folderPath);
                }

                var fullPath = Path.Combine(folderPath, fileName);
                using (var stream = new FileStream(fullPath, FileMode.Create))
                {
                    fileDetails.CopyTo(stream);
                }
                endPoint = Path.Combine(endPoint, fileName);
                if (operation.Equals("publication"))
                {
                    var publication = _context.Publication.OrderByDescending(p => p.CreatedDate)
                                      .FirstOrDefault(p => p.Author.ToUpper().Equals(usercode.ToUpper()));
                    publication.FileUrl = endPoint.Replace("\\", "/").ToLower();
                }
                if (operation.Equals("project"))
                {
                    var project = _context.Project.OrderByDescending(p => p.CreatedDate)
                                  .FirstOrDefault(p => p.EmpNo.ToUpper().Equals(usercode.ToUpper()));
                    project.FileUrl = endPoint.Replace("\\", "/").ToLower();
                }

                _context.SaveChanges();
                return(new ReturnData <string>
                {
                    Success = true,
                    Message = "Documents uploaded successfully"
                });
            }
            catch (Exception ex)
            {
                return(new ReturnData <string>
                {
                    Success = false,
                    Message = "Sorry, An error occurred"
                });
            }
        }
Esempio n. 10
0
        public JsonResult AddEvaluationQuestion(EvaluationQuestionViewModel evaluationQuestionViewModel)
        {
            try
            {
                var token = _tokenValidator.Validate(HttpContext);
                if (!token.Success)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        NotAuthenticated = true,
                        Message = $"Unauthorized:-{token.Message}",
                    }));
                }
                if (!string.IsNullOrEmpty(evaluationQuestionViewModel.QuestionDesc))
                {
                    var evaluation = new EvaluationQuestion()
                    {
                        QuestionDesc        = evaluationQuestionViewModel.QuestionDesc,
                        EvaluationSectionId = evaluationQuestionViewModel.EvaluationSectionId,
                        //AllowMultiple = evaluationQuestionViewModel.AllowMultiple,

                        //EvaluationQuestionOptions = evaluationQuestionViewModel.Options
                    };

                    if (evaluationQuestionViewModel.Id.HasValue && evaluationQuestionViewModel.Id.Value > 0)
                    {
                        evaluation.Id = (int)evaluationQuestionViewModel.Id;
                        _context.EvaluationQuestions.Update(evaluation);
                    }
                    else
                    {
                        _context.EvaluationQuestions.Add(evaluation);
                    }

                    _context.SaveChanges();

                    return(Json(new ReturnData <string>
                    {
                        Success = true,
                        Message = "EvaluationQuestions saved successfully"
                    }));
                }

                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "EvaluationQuestions name can not be empty"
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "An error occurred,please retry : " + ex.Message
                }));
            }
        }
Esempio n. 11
0
        public async Task <JsonResult> CreateQuestionnaireTemplate(ClearanceQuestionnaireTemplate clearance)
        {
            try
            {
                var token = _tokenValidator.Validate(HttpContext);
                if (!token.Success)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        NotAuthenticated = true,
                        Message = $"Unauthorized:-{token.Message}",
                    }));
                }

                if (clearance.Id > 0)
                {
                    var template = _context.ClearanceQuestionnaireTemplate.FirstOrDefault(t => t.Id == clearance.Id);
                    var sections = _context.ClearanceQuestionSection
                                   .Where(s => s.ClearanceQuestionnaireTemplateId == clearance.Id).ToList();
                    sections.ForEach(s =>
                    {
                        var questions = _context.ClearanceQuestion.Where(q => q.ClearanceQuestionSectionId == s.Id);
                        _context.ClearanceQuestion.RemoveRange(questions);
                    });

                    _context.ClearanceQuestionSection.RemoveRange(sections);
                    _context.ClearanceQuestionnaireTemplate.Remove(template);
                }

                _context.ClearanceQuestionnaireTemplate.Add(clearance);
                _context.SaveChanges();

                return(Json(new ReturnData <string> {
                    Success = true,
                    Message = "Survey template saved successfully"
                }));
            }
            catch (Exception ex)
            {
                return(Json(""));
            }
        }
Esempio n. 12
0
        public JsonResult editcurrentevaluation(CurrentEvaluationViewModel currentEvaluationViewModel, int id)
        {
            try
            {
                var token = _tokenValidator.Validate(HttpContext);
                if (!token.Success)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        NotAuthenticated = true,
                        Message = $"Unauthorized:-{token.Message}",
                    }));
                }

                var currentEvaluation = _context.EvaluationsCurrents.FirstOrDefault(c => c.Id == id);
                currentEvaluation.CurrentEvaluationName = currentEvaluationViewModel.CurrentEvaluationName;
                currentEvaluation.EvaluationId          = currentEvaluationViewModel.EvaluationId;
                currentEvaluation.EvaluationTarget      = Convert.ToInt32(currentEvaluationViewModel.Level);
                currentEvaluation.YearId    = currentEvaluationViewModel.YearId;
                currentEvaluation.Status    = currentEvaluationViewModel.Status;
                currentEvaluation.StartDate = currentEvaluationViewModel.StartDate;
                currentEvaluation.EndDate   = currentEvaluationViewModel.EndDate;

                _context.EvaluationsCurrents.Update(currentEvaluation);
                _context.SaveChanges();

                var evaluationCurrentActive = _context.EvaluationsCurrentActive.FirstOrDefault(a => a.Id == id);
                evaluationCurrentActive.EvaluationsCurrentId = currentEvaluation.Id;
                evaluationCurrentActive.EvaluationsId        = currentEvaluation.EvaluationId;
                evaluationCurrentActive.Status               = currentEvaluation.Status;
                evaluationCurrentActive.StartDate            = currentEvaluation.StartDate;
                evaluationCurrentActive.EvaluationTarget     = currentEvaluation.EvaluationTarget;
                evaluationCurrentActive.EndDate              = currentEvaluation.EndDate;
                evaluationCurrentActive.IsMandatory          = currentEvaluationViewModel.IsMandatory;
                evaluationCurrentActive.IsElearnigEvaluation = currentEvaluationViewModel.IsElearnigEvaluation;

                _context.EvaluationsCurrentActive.Update(evaluationCurrentActive);
                _context.SaveChanges();

                return(Json(new ReturnData <string>
                {
                    Success = true,
                    Message = "Current Evaluation has been updated successfully"
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "An error occurred,please retry : " + ex.Message
                }));
            }
        }
Esempio n. 13
0
        public PortalCoreContext GetContext()
        {
            var options = new DbContextOptionsBuilder <PortalCoreContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString())
                          .Options;
            var context = new PortalCoreContext(options);

            // ABS232-0140/2018
            context.Users.Add(new User
            {
                EmailConfirmed = true,
                UserName       = "******",
                Email          = "*****@*****.**",
                UserGroupsId   = 1,
                PasswordHash   = SecurePasswordHasher.Hash("123456"),
                Code           = "493ddc84-a8b4-47ff-a3b3-ecd07bf125fa",
                DateCreated    = DateTime.Now,
                Role           = Role.Admin,
                Status         = true,
            });

            context.UserGroups.Add(new UserGroups
            {
                GroupName = "AbnAdmin",
                Role      = Role.Admin,
                IsDefault = true,
                Status    = true
            });

            context.UserGroups.Add(new UserGroups
            {
                GroupName = "Student",
                Role      = Role.Student,
                IsDefault = true,
                Status    = true
            });

            context.Settings.Add(new Settings
            {
                Name          = "University of ABNO",
                EmailUserName = "******",
                LogoImageUrl  = "../../../assets/images/logo.jpg",
            });

            context.SaveChanges();
            return(context);
        }
Esempio n. 14
0
        public JsonResult CreateComplaint(Complaint complaint, Role role)
        {
            try
            {
                if (complaint.Id > 0)
                {
                    var complain = _context.Complaint.FirstOrDefault(c => c.Id == complaint.Id);
                    complain.Assignee = role == Role.Admin ? complaint.Assignee : complain.Assignee;
                    complain.Status   = role == Role.Admin ? complaint.Status : complain.Status;
                    complain.Remarks  = role == Role.Admin ? complaint.Remarks : complain.Remarks;
                    complain.Action   = role == Role.Admin ? complain.Action : complaint.Action;
                }
                else
                {
                    complaint.Status = "Pending";
                    var createResults = _unisolApiProxy.GetCurrentHostel(complaint.Username, classStatus).Result;
                    var jdata         = JsonConvert.DeserializeObject <ReturnData <HostelBooking> >(createResults);
                    complaint.Hostel = jdata.Data?.Hostel ?? "";
                    _context.Complaint.Add(complaint);
                }

                _context.SaveChanges();

                return(Json(new ReturnData <string>
                {
                    Success = true,
                    Message = "Submitted successfully"
                }));
            }
            catch (Exception)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "Sorry, An error occurred"
                }));
            }
        }
Esempio n. 15
0
        public JsonResult AddTemplate([FromBody] StaffPerformance performanceTemplate)
        {
            try
            {
                var token = _tokenValidator.Validate(HttpContext);
                if (!token.Success)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        NotAuthenticated = true,
                        Message = $"Unauthorized:-{token.Message}",
                    }));
                }

                if (performanceTemplate.Id < 1)
                {
                    performanceTemplate.DateCreated  = DateTime.UtcNow.AddHours(3);
                    performanceTemplate.DateModified = DateTime.UtcNow.AddHours(3);
                    var nameExists = _context.StaffPerformance.Any(p => p.Name.ToUpper().Equals(performanceTemplate.Name.ToUpper()));
                    if (nameExists)
                    {
                        return(Json(new ReturnData <string>
                        {
                            Success = false,
                            Message = "Sorry, Template name already exist"
                        }));
                    }
                }
                else
                {
                    performanceTemplate.DateModified = DateTime.UtcNow.AddHours(3);
                    var template = _context.StaffPerformance.FirstOrDefault(p => p.Id == performanceTemplate.Id);
                    if (template == null)
                    {
                        return(Json(new ReturnData <string>
                        {
                            Success = false,
                            Message = "Sorry, template not found"
                        }));
                    }

                    var sections = _context.PerformanceSection.Where(p => p.StaffPerformanceId == template.Id).ToList();
                    _context.PerformanceSection.RemoveRange(sections);

                    var questionnaire = _context.PerformanceQuestionnaire.Where(q => q.StaffPerformanceId == template.Id);
                    _context.PerformanceQuestionnaire.RemoveRange(questionnaire);

                    _context.StaffPerformance.Remove(template);
                }

                _context.StaffPerformance.Add(performanceTemplate);
                _context.SaveChanges();
                return(Json(new ReturnData <string> {
                    Success = true,
                    Message = "Performance template saved Successfully"
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "Sorry, An error occurred"
                }));
            }
        }
        public JsonResult SaveStudentSubjectResponse(EvaluationsCurrentWithSubjectViewModel evaluationsCurrentWithSubject)
        {
            if (string.IsNullOrEmpty(evaluationsCurrentWithSubject.LecturerName))
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "Kindly select unit lecturer"
                }));
            }
            if (evaluationsCurrentWithSubject.Evaluation.EvaluationSections.Count < 1)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "Please make sure you have answered all the questions",
                }));
            }

            try
            {
                var token = _tokenValidator.Validate(HttpContext);
                if (!token.Success)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        NotAuthenticated = true,
                        Message = $"Unauthorized:-{token.Message}",
                    }));
                }

                var studentUnitDetails = _unisolApiProxy.GetStudentUnitDetails(evaluationsCurrentWithSubject.UserCode, evaluationsCurrentWithSubject.UnitCode, classStatus).Result;
                var jdata = JsonConvert.DeserializeObject <ReturnData <dynamic> >(studentUnitDetails);
                if (!jdata.Success)
                {
                    return(Json(jdata));
                }

                var user = _context.Users.FirstOrDefault(u => u.UserName == evaluationsCurrentWithSubject.UserCode);
                var hasRespondedToUnit = _context.EvaluationTakenUnitWiseByUsers.Any(u => u.AspNetUserId == user.Id && u.UnitCode.ToLower().Equals(evaluationsCurrentWithSubject.UnitCode.ToLower()));
                if (hasRespondedToUnit)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = true,
                        Message = "Thank you for filling the evaluation.",
                    }));
                }

                var evaluationTakenUnitWiseByUser = new EvaluationTakenUnitWiseByUser
                {
                    UnitCode = evaluationsCurrentWithSubject.UnitCode,
                    EvaluationCurrentActiveId = evaluationsCurrentWithSubject.CurrentActiveEvaluationId,
                    EvaluationId        = evaluationsCurrentWithSubject.Evaluation.Id,
                    AspNetUserId        = user.Id,
                    EvaluationCurrentId = evaluationsCurrentWithSubject.CurrentEvaluationId,
                    AcademicYear        = jdata.Data.academicYear,
                    Semester            = jdata.Data.semester,
                    Campus       = jdata.Data.campus,
                    Department   = jdata.Data.department,
                    Programme    = jdata.Data.programme,
                    LecturerName = evaluationsCurrentWithSubject.LecturerName,
                    Schools      = jdata.Data.schools,
                    Gender       = jdata.Data.gender,
                    YearOfStudy  = jdata.Data.yearOfStudy,
                    CertType     = jdata.Data.certType
                };

                _context.EvaluationTakenUnitWiseByUsers.Add(evaluationTakenUnitWiseByUser);
                _context.SaveChanges();

                foreach (var evaluationsCurrentEvaluationSection in evaluationsCurrentWithSubject.Evaluation.EvaluationSections)
                {
                    foreach (var evaluationQuestion in evaluationsCurrentEvaluationSection.EvaluationQuestions)
                    {
                        if (evaluationQuestion.QuestionType == QuestionType.MultipleOptions)
                        {
                            var responseWeight = Array.FindIndex(evaluationQuestion.MultiAnswers.Split(")*("), x => x.Contains(evaluationQuestion.QuestionResponse)) + 1;
                            evaluationQuestion.QuestionResponse = responseWeight.ToString();
                        }

                        var questionResponse = new EvaluationQuestionResponse
                        {
                            DateCreated          = DateTime.Now,
                            EvaluationId         = evaluationsCurrentWithSubject.Evaluation.Id,
                            EvaluationSectionId  = evaluationQuestion.EvaluationSectionId,
                            SectionName          = evaluationsCurrentEvaluationSection.SectionName,
                            QuestionType         = evaluationQuestion.QuestionType,
                            UnitCode             = evaluationsCurrentWithSubject.UnitCode,
                            EvaluationQuestionId = evaluationQuestion.Id,
                            QuestionResponse     = evaluationQuestion.QuestionResponse,
                            UserId = user.Id,
                            EvaluationsCurrentActiveId      = evaluationsCurrentWithSubject.CurrentActiveEvaluationId,
                            EvaluationTakenUnitWiseByUserId = evaluationTakenUnitWiseByUser.Id,
                        };
                        _context.EvaluationQuestionResponses.Add(questionResponse);
                    }
                    _context.SaveChanges();
                }

                return(Json(new ReturnData <string>
                {
                    Success = true,
                    Message = "Thank you for filling the evaluation.",
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "Oops a server error occured,",
                }));
            }
        }
Esempio n. 17
0
        public JsonResult AddNews(NewsViewModel newsViewModel, string userCode)
        {
            try
            {
                var token = _tokenValidator.Validate(HttpContext);
                if (!token.Success)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        NotAuthenticated = true,
                        Message = $"Unauthorized:-{token.Message}",
                    }));
                }

                if (token.Role == Role.Student)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        NotAuthenticated = true,
                        Message = "Sorry, you are not authorized to perform this action",
                    }));
                }

                newsViewModel.DateCreated = DateTime.UtcNow;
                var portalNewsTypes = _context.PortalNewsTypes.Any();
                var message         = portalNewsTypes ? "Please select news category" : "Please create news category";
                if (newsViewModel.PortalNewsTypeId == 0)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        Message = message
                    }));
                }

                if (string.IsNullOrEmpty(newsViewModel.NewsBody))
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        Message = "Message can not be empty"
                    }));
                }

                var creator = _context.Users.FirstOrDefault(u => u.UserName == userCode);
                var news    = new PortalNews
                {
                    NewsBody         = newsViewModel.NewsBody,
                    DateCreated      = newsViewModel.DateCreated,
                    ExpiryDate       = newsViewModel.ExpiryDate,
                    NewsStatus       = newsViewModel.NewsStatus,
                    NewsTitle        = newsViewModel.NewsTitle,
                    PortalNewsTypeId = newsViewModel.PortalNewsTypeId,
                    SendEmailFlag    = newsViewModel.SendEmailFlag,
                    TargetAudience   = newsViewModel.TargetAudience,
                    CreatorId        = creator.Id,
                    TargetGroups     = newsViewModel.TargetGroups
                };

                if (newsViewModel.Id.HasValue && newsViewModel.Id.Value > 0)
                {
                    _context.PortalNews.Update(news);
                }
                else
                {
                    _context.PortalNews.Add(news);
                }

                if (newsViewModel.SendEmailFlag)
                {
                    //int[] groupIds = newsViewModel.TargetAudience.Split(',').Select(s => int.TryParse(s, out int n) ? n : 0).ToArray();
                    var users = _context.Users.Where(u => u.UserGroupsId == newsViewModel.TargetAudience).ToList();
                    foreach (var user in users)
                    {
                        var emailContent = new MailsViewModel
                        {
                            UserCode   = user.UserName,
                            Firstname  = "",
                            Code       = newsViewModel.NewsBody,
                            Email      = user.Email,
                            MailMethod = MailSendMethod.NewsPosting,
                            PortalUrl  = newsViewModel.portalUrl,
                            Subject    = newsViewModel.NewsTitle
                        };

                        emailSender.SendEmail(emailContent);
                    }
                }

                _context.SaveChanges();

                return(Json(new ReturnData <string>
                {
                    Success = true,
                    Message = "Successful"
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "An error occurred,please retry : " + ex.Message
                }));
            }
        }
Esempio n. 18
0
        public JsonResult SavePortalSettingsConfig(PortalConfigData portalConfigData)
        {
            try
            {
                var token = _tokenValidator.Validate(HttpContext);
                if (!token.Success)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        NotAuthenticated = true,
                        Message = $"Unauthorized:-{token.Message}",
                    }));
                }

                var setting = _context.Settings.FirstOrDefault();
                setting.UnitsRegLevels         = portalConfigData.UnitsLevel;
                setting.HostelRatio            = portalConfigData.HostelRatio ?? "";
                setting.ExamCardNotes          = portalConfigData.ExamCardNotes ?? "";
                setting.HostelDuration         = portalConfigData.HostelDuration;
                setting.HostelBookingStartDate = portalConfigData.BookingStartDate.GetValueOrDefault().AddDays(1).Date;
                var    rations         = setting.HostelRatio.Split(")*(");
                double totalPercentage = 0;
                foreach (var ratio in rations)
                {
                    double.TryParse(ratio, out double percentage);
                    totalPercentage = totalPercentage + percentage;
                }

                if (totalPercentage > 100)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        Message = "Sorry, hostel allocation percentage cannot be greater than 100%",
                    }));
                }

                if (portalConfigData.ClassStatus != null)
                {
                    setting.ClassStatus = portalConfigData.ClassStatus;
                }

                var portalConfigs = _context.PortalConfigs.ToList();
                var message       = "";
                if (portalConfigs.Count > 0)
                {
                    portalConfigs.ForEach(p =>
                    {
                        portalConfigData.PortalConfigs.ForEach(r =>
                        {
                            if (p.Code == r.Code)
                            {
                                p.Status = r.Status;
                            }
                        });
                    });
                    _context.PortalConfigs.UpdateRange(portalConfigs);
                    message = "Settings have been updated";
                }
                else
                {
                    _context.PortalConfigs.AddRange(portalConfigData.PortalConfigs);
                    message = "Settings have been saved";
                }

                _context.SaveChanges();
                return(Json(new ReturnData <ExamCardStatusModel>
                {
                    Message = message,
                    Data = new ExamCardStatusModel {
                        Status = true
                    }
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "There was a problem when switching exam card status " + ex.Message
                }));
            }
        }
Esempio n. 19
0
        public JsonResult AddEvaluation(EvaluationViewModel evaluationViewModel)
        {
            try
            {
                var token = _tokenValidator.Validate(HttpContext);
                if (!token.Success)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        NotAuthenticated = true,
                        Message = $"Unauthorized:-{token.Message}",
                    }));
                }

                if (string.IsNullOrEmpty(evaluationViewModel.Evaluation.EvaluationName))
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        Message = "Evaluation name can not be empty"
                    }));
                }

                var    results             = _unisolApiProxy.GetInstitutionInfo().Result;
                var    jdata               = new ProcessJsonReturnResults <dynamic>(results).UnisolApiData;
                string institutionInitials = jdata.Data?.subTitle ?? "";

                var multipleAnswers = "";
                var sections        = new List <EvaluationSection>();
                foreach (var sec in evaluationViewModel.Sections)
                {
                    var question = new List <EvaluationQuestion>();
                    sec.Questions.ForEach(q => {
                        if (q.QuestionType == QuestionType.MultipleAnswers)
                        {
                            multipleAnswers = string.Join(")*(", q.MultiAnswers.Split(","));
                        }

                        if (q.QuestionType == QuestionType.MultipleOptions)
                        {
                            multipleAnswers = "Strongly Disagree)*(Disagree)*(Uncertain)*(Agree)*(Strongly Agree";
                            if (institutionInitials.Equals("MUT"))
                            {
                                multipleAnswers = "V. Poor)*(Poor)*(Fair)*(Good)*(Excellent";
                            }
                        }
                        if (q.QuestionType == QuestionType.YesNo)
                        {
                            multipleAnswers = "Yes)*(No";
                        }
                        question.Add(
                            new EvaluationQuestion
                        {
                            QuestionDesc = q.Question,
                            QuestionType = q.QuestionType,
                            MultiAnswers = multipleAnswers,
                        }
                            );
                    });

                    sections.Add(new EvaluationSection
                    {
                        SectionName         = sec.SectionName,
                        SectionDesc         = sec.SectionDesc,
                        EvaluationQuestions = question
                    });
                }

                var evaluation = new Evaluation()
                {
                    EvaluationName     = evaluationViewModel.Evaluation.EvaluationName,
                    EvaluationDesc     = evaluationViewModel.Evaluation.EvaluationDesc,
                    EvaluationSections = sections
                };
                if (evaluationViewModel.Id.HasValue && evaluationViewModel.Id.Value > 0)
                {
                    var id   = (int)evaluationViewModel.Id;
                    var eval = _context.Evaluations.FirstOrDefault(e => e.Id == id);
                    if (eval != null)
                    {
                        _context.Evaluations.Remove(eval);
                        _context.SaveChanges();
                    }

                    _context.Evaluations.Add(evaluation);
                    _context.SaveChanges();

                    return(Json(new ReturnData <string>
                    {
                        Success = true,
                        Message = "Evaluation has been updated successfully"
                    }));
                }
                else
                {
                    if (_context.Evaluations.Any(e => e.EvaluationName == evaluation.EvaluationName))
                    {
                        return(Json(new ReturnData <string>
                        {
                            Success = false,
                            Message = "Sorry, Evaluation name exist. kindly use a different name"
                        }));
                    }

                    _context.Evaluations.Add(evaluation);
                }

                _context.SaveChanges();

                return(Json(new ReturnData <string>
                {
                    Success = true,
                    Message = "Evaluation saved successfully"
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "An error occurred,please retry : " + ex.Message
                }));
            }
        }
Esempio n. 20
0
        public JsonResult ApplyLeave(HrpLeaveApp leave)
        {
            try
            {
                var settings = _context.Settings.FirstOrDefault();
                settings.Initials = settings?.Initials ?? "";
                if (string.IsNullOrEmpty(leave.Reliever) && settings.LeaveRelieverMandatory)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        Message = "Kindly select your reliver"
                    }));
                }

                leave.Sdate = leave.Sdate.GetValueOrDefault().AddDays(1);
                leave.Edate = leave.Edate.GetValueOrDefault().AddDays(1);
                var daysFromStartDay = (leave.Sdate - DateTime.UtcNow).GetValueOrDefault().TotalDays;
                leave.Emergency = leave.Emergency == null ? false : leave.Emergency;
                if (daysFromStartDay < 14 && settings.Initials.ToUpper().Equals("ABNO") && leave.LeaveType.ToUpper().Equals("ANNUAL LEAVE") && !(bool)leave.Emergency)
                {
                    UpdateDocument(leave);
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        Message = "Sorry, leave start date must be atleast two weeks from the application date"
                    }));
                }

                leave.Rdate = DateTime.UtcNow;
                var token = _tokenValidator.Validate(HttpContext);
                if (!token.Success)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        NotAuthenticated = true,
                        Message = $"Unauthorized:-{token.Message}",
                    }));
                }

                if (token.Role != Role.Staff)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        NotAuthenticated = true,
                        Message = "Sorry, you are not authorized to perform this action",
                    }));
                }

                var app      = _unisolApiProxy.ApplyLeave(leave, settings.LeaveRelieverMandatory).Result;
                var jdata    = JsonConvert.DeserializeObject <ReturnData <HrpLeaveApp> >(app);
                var document = _context.LeaveDocument.Where(d => d.UserName.ToUpper().Equals(leave.EmpNo.ToUpper())).OrderByDescending(d => d.DateCreated).FirstOrDefault();

                if (jdata.Success)
                {
                    if (!string.IsNullOrEmpty(jdata.Data.Reliever))
                    {
                        _context.Add(new Obstructor
                        {
                            LeaveRef  = jdata.Data?.Ref ?? "",
                            Requestor = leave?.EmpNo ?? "",
                            Reliver   = jdata.Data?.Reliever ?? "",
                            Status    = "Pending"
                        });

                        if (document != null)
                        {
                            document.LeaveRef = jdata.Data?.Ref ?? "";
                        }

                        _context.SaveChanges();
                    }
                }
                else
                {
                    if (document != null)
                    {
                        UpdateDocument(leave);
                    }
                }

                return(Json(jdata));
            }
            catch (Exception)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "Sorry, An error occurred"
                }));
            }
        }
Esempio n. 21
0
        public JsonResult ResetPassword(RegisterViewModel request)
        {
            request.Password = request.Password ?? "";
            var requiredFields = new List <Tuple <string, string, DataType> >
            {
                Tuple.Create("username", request.RegNumber, DataType.Default),
            };

            var validUserInputs = _validateService.Validate(requiredFields);

            if (!validUserInputs.Valid)
            {
                return(Json(new ReturnData <string>
                {
                    Message = validUserInputs.Errors,
                    Success = validUserInputs.Valid
                }));
            }

            try
            {
                var registeredUser = _context.Users.FirstOrDefault(u => (u.UserName.ToUpper().Equals(request.RegNumber.ToUpper())) || (u.Code.ToString() == request.RegNumber) || (u.Id.ToString() == request.RegNumber));
                if (registeredUser == null)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        Message = "Username not found"
                    }));
                }

                if (string.IsNullOrEmpty(registeredUser.UserName))
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        Message = "Username not found"
                    }));
                }

                registeredUser.PasswordHash = registeredUser.PasswordHash ?? "";
                var hashedNewPassword = SecurePasswordHasher.Hash(request.Password);
                if (hashedNewPassword.ToUpper().Equals(registeredUser.PasswordHash.ToUpper()))
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        Message = "Kindly use a different password from the previous"
                    }));
                }

                var userResetPassword = new UserResetPassword();

                if ((request.Role == Role.Admin) || (request.Role == Role.All))
                {
                    userResetPassword             = _context.UserResetPasswords.FirstOrDefault(u => u.UserId == registeredUser.Id && u.Status == false);
                    registeredUser.PasswordHash   = SecurePasswordHasher.Hash(request.Password);
                    registeredUser.EmailConfirmed = true;
                    registeredUser.Status         = true;
                    if (userResetPassword != null)
                    {
                        userResetPassword.Status = true;
                        _context.Update(userResetPassword);
                    }

                    _context.Update(registeredUser);
                    _context.SaveChanges();

                    return(Json(new ReturnData <string>
                    {
                        Success = true,
                        Message = "Password reset successful"
                    }));
                }

                userResetPassword = new UserResetPassword
                {
                    UserId      = registeredUser.Id,
                    ResetCode   = Guid.NewGuid().ToString(),
                    DateCreated = DateTime.Now,
                    Status      = false
                };
                var success = false;

                var userGroup = _context.UserGroups.FirstOrDefault(u => u.Id == registeredUser.UserGroupsId);

                mailMethod = MailSendMethod.PasswordReset;
                var subject = "Reset Account Password";
                if (userGroup?.Role == Role.Student)
                {
                    var classStatus  = _context.Settings.FirstOrDefault()?.ClassStatus;
                    var result       = _unisolApiProxy.CheckStudentExists(request.RegNumber, classStatus).Result;
                    var jdata        = new ProcessJsonReturnResults <UserDetails>(result).UnisolApiData;
                    var emailContent = new MailsViewModel {
                        UserCode   = request.RegNumber,
                        Firstname  = jdata.Data.Names,
                        Code       = userResetPassword.ResetCode,
                        Email      = registeredUser.Email,
                        MailMethod = mailMethod,
                        PortalUrl  = request.PortalUrl,
                        Subject    = subject
                    };
                    success = emailSender.SendEmail(emailContent);
                }
                if (userGroup?.Role == Role.Staff)
                {
                    var result       = _unisolApiProxy.CheckEmployeeExists(request.RegNumber).Result;
                    var jdata        = JsonConvert.DeserializeObject <ReturnData <HrpEmployee> >(result);
                    var emailContent = new MailsViewModel
                    {
                        UserCode   = request.RegNumber,
                        Firstname  = jdata.Data.Names,
                        PortalUrl  = request.PortalUrl,
                        Code       = userResetPassword.ResetCode,
                        Email      = registeredUser.Email,
                        MailMethod = mailMethod,
                        Subject    = subject
                    };
                    success = emailSender.SendEmail(emailContent);
                }

                if (success)
                {
                    registeredUser.Code = userResetPassword.ResetCode;
                    _context.SaveChanges();

                    var email = registeredUser.Email.Split('@');
                    return(Json(new ReturnData <bool>
                    {
                        Success = true,
                        Message = $"We have sent a link to reset your password, please check your email ({email[0].Substring(0, 1)}*****{email[0].Substring(email[0].Length - 2)}@{email[1]})."
                    }));
                }
                return(Json(new ReturnData <bool>
                {
                    Success = false,
                    Message = "There was a problem while trying reset your password, please contact admin"
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "Something went wrong, please try again after sometime.",
                    Error = new Error(ex)
                }));
            }
        }
Esempio n. 22
0
        public JsonResult AddEvents(EventsViewModel eventsViewModel)
        {
            eventsViewModel.EventStartDate = eventsViewModel.EventStartDate.AddDays(1);
            eventsViewModel.EventEndDate   = eventsViewModel.EventEndDate.AddDays(1);
            var token = _tokenValidator.Validate(HttpContext);

            if (!token.Success)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    NotAuthenticated = true,
                    Message = $"Unauthorized:-{token.Message}",
                }));
            }

            if (token.Role == Role.Student || token.Role == Role.Applicant)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    NotAuthenticated = true,
                    Message = "Sorry, you are not authorized to access this page",
                }));
            }

            var typeId = eventsViewModel.portalEventsTypeId ?? 0;

            eventsViewModel.DateCreated = DateTime.UtcNow;
            if (typeId == 0)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "Please select event category"
                }));
            }

            try
            {
                var events = new PortalEvents
                {
                    EventTitle        = eventsViewModel?.EventTitle ?? "",
                    EventDesc         = eventsViewModel?.EventDesc ?? "",
                    CreatedBy         = eventsViewModel.CreatedBy,
                    DateCreated       = eventsViewModel.DateCreated,
                    EventStartDate    = eventsViewModel.EventStartDate,
                    EventEndDate      = eventsViewModel.EventEndDate,
                    SendEmailFlag     = eventsViewModel.SendEmailFlag,
                    TargetAudience    = eventsViewModel.TargetAudience,
                    PortalEventTypeId = eventsViewModel.portalEventsTypeId,
                    EventVenue        = eventsViewModel?.EventVenue ?? "",
                    TargetGroups      = eventsViewModel?.TargetGroups ?? "",
                    Campus            = eventsViewModel?.Campus ?? "",
                    Department        = eventsViewModel?.Department ?? "",
                    School            = eventsViewModel?.School ?? "",
                    YearOfStudy       = eventsViewModel?.YearOfStudy ?? ""
                };

                if (eventsViewModel.Id.HasValue && eventsViewModel.Id.Value > 0)
                {
                    events.Id = events.Id;
                    _context.PortalEvents.Update(events);
                }
                else
                {
                    _context.PortalEvents.Add(events);
                }

                if (eventsViewModel.SendEmailFlag)
                {
                    var users = _context.Users.Where(u => u.UserGroupsId == eventsViewModel.TargetAudience).ToList();
                    foreach (var user in users)
                    {
                        var emailContent = new MailsViewModel
                        {
                            UserCode   = user?.UserName ?? "",
                            Firstname  = "",
                            Code       = eventsViewModel?.EventDesc ?? "",
                            Email      = user.Email,
                            MailMethod = MailSendMethod.EventPosting,
                            PortalUrl  = eventsViewModel?.PortalUrl ?? "",
                            Subject    = eventsViewModel?.EventTitle ?? ""
                        };

                        emailSender.SendEmail(emailContent);
                    }
                }

                _context.SaveChanges();

                return(Json(new ReturnData <string>
                {
                    Success = true,
                    Message = "Successful"
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "An error occurred,please retry : " + ex.Message
                }));
            }
        }
Esempio n. 23
0
        public JsonResult EditStudentProfile(StudentprofileViewModel profileViewModel, ProfileEditor editOperation)
        {
            try
            {
                var token = _tokenValidator.Validate(HttpContext);
                if (!token.Success)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        NotAuthenticated = true,
                        Message = $"Unauthorized:-{token.Message}",
                    }));
                }

                var settings       = _context.PortalConfigs.Any(c => c.Code == "008" && c.Status);
                var profileUpdates = new ProfileUpdates
                {
                    TelNo                = profileViewModel.Telno,
                    Email                = profileViewModel.Email,
                    HomeAddress          = profileViewModel.Homeaddress,
                    UserCode             = profileViewModel.AdmnNo,
                    DateCreated          = DateTime.Now,
                    AllowedAdminApproval = true,
                    Status               = false
                };

                if (settings)
                {
                    var updateProfileResults = _unisolApiProxy.EditStudentProfile(profileViewModel, classStatus, editOperation).Result;
                    var jdata = JsonConvert.DeserializeObject <ReturnData <string> >(updateProfileResults);
                    if (jdata.Success)
                    {
                        var portalUser = _context.Users.FirstOrDefault(u => u.UserName.ToUpper().Equals(profileViewModel.AdmnNo.ToUpper()));
                        if (portalUser != null)
                        {
                            portalUser.Email = profileViewModel.Email;
                            _context.SaveChanges();
                        }

                        return(Json(new ReturnData <string>
                        {
                            Success = true,
                            Message = "Profile Updated successfully"
                        }));
                    }
                }

                _context.ProfileUpdate.Add(profileUpdates);
                _context.SaveChanges();

                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "Profile Updated Request received, We shall contact yo shortly"
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "An error occured while trying to update the profile, please try again"
                }));
            }
        }
Esempio n. 24
0
        public ReturnData <dynamic> Login(LoginViewModel request)
        {
            request.Username = request.Username ?? "";
            request.Password = request.Password ?? "";
            request.Username = request.Username.Trim();
            var requiredFields = new List <Tuple <string, string, DataType> >
            {
                Tuple.Create("username", request.Username, DataType.Default),
            };

            var validUserInputs = _validateService.Validate(requiredFields);

            if (!validUserInputs.Valid)
            {
                logger.Error($"LoginWrongInputs: \t {validUserInputs.Errors}");
                return(new ReturnData <dynamic>
                {
                    Message = validUserInputs.Errors,
                    Success = validUserInputs.Valid
                });
            }

            try
            {
                var validPortalUser = userCredentials.PortalUserValidation(request);
                if (!validPortalUser.Valid)
                {
                    logger.Error($"LoginInvalidUser: \t {validPortalUser.Errors}");
                    return(new ReturnData <dynamic>
                    {
                        Success = validPortalUser.Valid,
                        Message = validPortalUser.Errors
                    });
                }

                var userDetails = _portalServices.GetUserByCode(request.Username);
                if (!userDetails.Success)
                {
                    logger.Error($"LoginUserNotFound: \t {userDetails.Message}");
                    return(new ReturnData <dynamic>
                    {
                        Success = false,
                        Message = userDetails.Message
                    });
                }

                var portalUser = _portalServices.GetUserByCode(request.Username).Data;
                var hash       = SecurePasswordHasher.Hash(Guid.NewGuid().ToString());
                var token      = new UserToken()
                {
                    Name          = "Auth",
                    LoginProvider = hash,
                    Value         = hash,
                    UserId        = portalUser.Id
                };
                var expiredTokens = _context.UserTokens.Where(t => t.UserId.Equals(portalUser.Id)).ToList();
                if (expiredTokens.Any())
                {
                    expiredTokens.ForEach(t => { _context.UserTokens.Remove(t); });
                }

                _context.UserTokens.Add(token);
                _context.SaveChanges();

                var userGroup   = _context.UserGroups.FirstOrDefault(k => k.Id == portalUser.UserGroupsId);
                var settings    = _context.Settings.FirstOrDefault();
                var portalAdmin = new
                {
                    Username = portalUser.UserName,
                    Token    = token.Value,
                    userGroup?.Role,
                    GenesisUser = settings.IsGenesis,
                    userGroup?.GroupName,
                    Allowed      = userGroup?.AllowedPrivileges,
                    UserRegister = new UserDetails
                    {
                        Names  = portalUser.UserName,
                        Wemail = portalUser.Email
                    }
                };

                var message = "Login successfull";
                if (userGroup?.Role == Role.Admin)
                {
                    return new ReturnData <dynamic>
                           {
                               Success = true,
                               Message = message,
                               Data    = portalAdmin
                           }
                }
                ;

                var result = "";

                if (userGroup?.Role == Role.Student)
                {
                    result = _unisolApiProxy.CheckStudentExists(portalUser.UserName, classStatus).Result;
                }

                if (userGroup?.Role == Role.Staff)
                {
                    result = _unisolApiProxy.CheckEmployeeExists(portalUser.UserName).Result;
                }

                var response = new ProcessJsonReturnResults <UserDetails>(result).UnisolApiData;
                if (response.Data == null)
                {
                    logger.Error($"LoginUserDetails: \t {response.Message}");
                    return(new ReturnData <dynamic>
                    {
                        Success = false,
                        Message = response.Message
                    });
                }

                var detailsStudentStaff = new
                {
                    Username = portalUser.UserName,
                    Token    = token.Value,
                    userGroup?.Role,
                    GenesisUser = settings.IsGenesis,
                    userGroup?.GroupName,
                    Allowed      = userGroup?.AllowedPrivileges,
                    UserRegister = response.Data
                };
                return(new ReturnData <dynamic>
                {
                    Success = true,
                    Message = message,
                    Data = detailsStudentStaff
                });
            }
            catch (Exception ex)
            {
                logger.Error($"LoginException: \t {ex}");
                return(new ReturnData <dynamic>
                {
                    Success = false,
                    Message = "Sorry we are unable to log you in at this time, Please try again after some time"
                });
            }
        }
Esempio n. 25
0
        public JsonResult SaveUploadedFiles(int folderId, string usercode)
        {
            try
            {
                var users = _context.Users.FirstOrDefault(u => u.UserName.ToUpper().Equals(usercode.ToUpper()));
                var token = _tokenValidator.Validate(HttpContext);
                if (!token.Success)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        NotAuthenticated = true,
                        Message = $"Unauthorized:-{token.Message}",
                    }));
                }
                var documentFolderLocation = Path.Combine(_hostingEnvironment.WebRootPath, "Documents");
                var folder = _context.DocumentRepository.Find(folderId);
                var path   = Path.Combine(documentFolderLocation, folder.FolderPath);
                var file   = Request.Form.Files.FirstOrDefault();

                if (!Directory.Exists(path))
                {
                    var di = Directory.CreateDirectory(path);
                }

                if (file == null || file.Length <= 0)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        Message = "Failed tp upload the file"
                    }));
                }
                var fileName       = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
                var uniqueFileName = GetUniqueFileName(fileName);
                var fullPath       = Path.Combine(path, uniqueFileName);
                using (var stream = new FileStream(fullPath, FileMode.Create))
                {
                    file.CopyTo(stream);
                }
                var fileUrl = folder.FolderPath.Replace("\\", "/") + '/' + uniqueFileName;
                var status  = users.Role == Role.Admin ? true : false;


                var upFile = new DocumentRepositoryFile
                {
                    DateAdded  = DateTime.Now,
                    FileName   = uniqueFileName,
                    FilePath   = fileUrl,
                    FileSize   = (int?)file.Length,
                    FileType   = file.ContentType,
                    FileExt    = fileName.Substring(fileName.LastIndexOf('.') + 1).ToUpper(),
                    UserGroups = folder.UserGroups,
                    FolderId   = folderId,
                    Repository = folder,
                    CreatedBy  = usercode,
                    Status     = status
                };

                _context.DocumentRepositoryFiles.Add(upFile);

                _context.SaveChanges();
                return(Json(new ReturnData <string>
                {
                    Success = true,
                    Message = "Uploaded successfully",
                    Data = fileUrl
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "An error occured while trying to upload the file, please try again",
                    Error = new Error(ex)
                }));
            }
        }
Esempio n. 26
0
 public int Save()
 {
     return(_context.SaveChanges());
 }
Esempio n. 27
0
        public JsonResult SaveUserGroupPrivilege(UserGroupPrivilegeViewModel request)
        {
            try
            {
                var token = _tokenValidator.Validate(HttpContext);
                if (!token.Success)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        NotAuthenticated = true,
                        Message = $"Unauthorized:-{token.Message}",
                    }));
                }
                if (!string.IsNullOrEmpty(request.PrivilegeName))
                {
                    var userGroupPrivilege = new UserGroupPrivilege
                    {
                        PrivilegeName = request.PrivilegeName,
                        Action        = request.Action,
                        Role          = request.Role
                    };
                    var privilegeExists = _context.UserGroupPrivileges.Any(p => p.Action == request.Action);
                    if (privilegeExists)
                    {
                        return(Json(new ReturnData <string>
                        {
                            Success = false,
                            Message = "Both privilege name and action must be unique"
                        }));
                    }

                    var message = "";
                    if (request.Id.HasValue && request.Id.Value > 0)
                    {
                        userGroupPrivilege.Id = request.Id.Value;
                        _context.UserGroupPrivileges.Update(userGroupPrivilege);
                        message = "User group privilege updated successfully";
                    }
                    else
                    {
                        _context.UserGroupPrivileges.Add(userGroupPrivilege);
                        message = "User group privilege saved successfully";
                    }

                    _context.SaveChanges();

                    return(Json(new ReturnData <string>
                    {
                        Success = true,
                        Message = message
                    }));
                }

                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "Privilege name can not be empty"
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "An error occurred,please retry : " + ex.Message
                }));
            }
        }