コード例 #1
0
        public Result Update(AdministratorEntity entity)
        {
            var con    = new DapperConnectionManager();
            var query  = new QueryEntity();
            var result = new Result();

            if (!string.IsNullOrEmpty(entity.Password))
            {
                if (entity.Password.Length < 6)
                {
                    result         = new Result(false);
                    result.Message = "Password length invalid";
                    return(result);
                }
                var credentials = new CredentialsManager();
                var hash        = credentials.GenerateSalt();
                entity.Password = credentials.EncodePassword(entity.Password, hash);
                entity.Hash     = hash;
                query.Query     = @"UPDATE Administrators set Name = @Name, Password = @Password, Hash = @Hash where AdministratorId = @AdministratorId";
            }
            else
            {
                query.Query = @"UPDATE Administrators set Name = @Name where AdministratorId = @AdministratorId";
            }

            query.Entity   = entity;
            result         = con.ExecuteQuery(query);
            result.Message = result.Success ? "The Adminsitrator has been updated" : "An error occurred";
            result.Entity  = entity.AdministratorId;
            return(result);
        }
コード例 #2
0
        public Result Delete(UserEntity entity)
        {
            var credentials = new CredentialsManager();
            var result      = credentials.ValidateUserToken(entity.Token);

            if (!result.Success)
            {
                return(result);
            }
            var user = (UserEntity)result.Entity;

            if (user.UserId != entity.UserId)
            {
                result.Message = "Forbidden operation";
                result.Success = false;
                return(result);
            }

            var con   = new DapperConnectionManager();
            var query = new QueryEntity();

            entity.Email = entity.Email.Trim().ToLower();
            query.Query  = @"Update Users Set Active = 0
                            where UserId = @UserId";
            query.Entity = new { UserId = entity.UserId };

            result         = con.ExecuteQuery <UserEntity>(query);
            result.Message = result.Success ? "The user has been deleted" : "An error has occurred";
            return(result);
        }
コード例 #3
0
        public Result Insert(AdministratorEntity entity, bool seal = false)
        {
            var result = new Result();

            if (entity.Password.Length < 6)
            {
                result         = new Result(false);
                result.Message = "Password length invalid";
                return(result);
            }

            var con   = new DapperConnectionManager();
            var query = new QueryEntity();

            var credentials = new CredentialsManager();

            var hash = credentials.GenerateSalt();

            entity.Password = credentials.EncodePassword(entity.Password, hash);
            entity.Hash     = hash;
            entity.Username = entity.Username.Trim().ToLower();
            entity.Sealed   = seal;

            query.Entity = entity;
            query.Query  = @"INSERT INTO Administrators (Username, Password, Hash, Sealed, Name) VALUES(@Username, @Password, @Hash, @Sealed, @Name)";

            result         = con.InsertQuery(query);
            result.Message = result.Success ? "The administrator has been created" : "An error occurred";
            result.Entity  = entity;
            return(result);
        }
コード例 #4
0
        public Result Login(UserEntity entity)
        {
            var result = new Result();

            try
            {
                var con         = new DapperConnectionManager();
                var query       = new QueryEntity();
                var credentials = new CredentialsManager();
                entity.Email = entity.Email.Trim().ToLower();
                query.Query  = @"SELECT * FROM Users
                            where Email = @Email and Active = 1 and ApnaUser = 0";
                query.Entity = entity;
                result       = con.ExecuteQuery <UserEntity>(query);

                if (!result.Success)
                {
                    result.Message = "Login error";
                    return(result);
                }

                var r = (IEnumerable <UserEntity>)result.Entity;

                var user = r.FirstOrDefault();

                if (user == null)
                {
                    result.Message = "Invalid password or user";
                    result.Success = false;
                    result.Entity  = null;
                    return(result);
                }
                var password = credentials.EncodePassword(entity.Password, user.Hash);
                if (password == user.Password)
                {
                    user.Hash     = null;
                    user.Password = null;
                    user.Token    = credentials.GenerateUserToken(user);
                    result.Entity = user;
                    return(result);
                }
                result.Entity  = null;
                result.Message = "User not found";
                result.Success = false;
            }
            catch (Exception ex)
            {
                Logger.Log(ex);
                result.Entity  = null;
                result         = result ?? new Result(false);
                result.Message = "An error occurred";
            }

            return(result);
        }
コード例 #5
0
        public Result GetSecuredUserDetails(int userId)
        {
            var result = new Result();

            try
            {
                var con         = new DapperConnectionManager();
                var query       = new QueryEntity();
                var credentials = new CredentialsManager();

                query.Query  = @"SELECT [UserId]
                                      ,[Name]
                                      ,[Email]
                                      ,[NurseType]
                                      ,[ActiveWorking]
                                      ,[Area]
                                      ,[Country]
                                      ,[Suburb]
                                      ,[PostalCode]
                                      ,[State]
                                      ,[defaultQuizId]
                                      ,[salary] 
                            FROM Users
                            where UserId = @UserId and Active = 1 and ApnaUser = 0";
                query.Entity = new { UserId = userId };
                result       = con.ExecuteGetOneItemQuery <UserEntity>(query);

                if (!result.Success)
                {
                    result.Message = "Login error";
                    return(result);
                }



                var user = (UserEntity)result.Entity;

                if (user == null)
                {
                    result.Message = "Invalid user";
                    result.Success = false;
                    result.Entity  = null;
                    return(result);
                }
            }
            catch (Exception ex)
            {
                Logger.Log(ex);
                result.Entity  = null;
                result         = result ?? new Result(false);
                result.Message = "An error occurred";
            }

            return(result);
        }
コード例 #6
0
        public Result GenerateRecoveringCode(EmployerEntity entity)
        {
            var result      = new Result();
            var con         = new DapperConnectionManager();
            var query       = new QueryEntity();
            var credentials = new CredentialsManager();

            entity.Email = entity.Email.Trim().ToLower();
            query.Query  = @"SELECT * FROM Employers
                            where Email = @Email and Active = 1 and ApnaUser = 0";
            query.Entity = entity;
            result       = con.ExecuteQuery <EmployerEntity>(query);

            if (!result.Success)
            {
                result.Entity  = null;
                result.Message = "An error occurred";
                return(result);
            }

            var r = (IEnumerable <EmployerEntity>)result.Entity;

            var employer = r.FirstOrDefault();

            if (employer == null)
            {
                result.Entity  = null;
                result.Message = "Invalid user";
                result.Success = false;
                return(result);
            }
            var Token = credentials.GenerateRecoverPasswordToken(employer);

            Token = HttpUtility.UrlEncode(Token);

            Task.Run(() => new EmailManager().SendEmail(entity.Email, DL.Models.EmailType.RecoverPassword, new
            {
                Token,
                CurrentUserName  = employer.EmployerName,
                CurrentUserEmail = employer.Email,
                WebsiteUrl       = ConfigurationManager.AppSettings["mnf.website"],
                ContentUrl       = ConfigurationManager.AppSettings["mnf.content"]
            }));

            result.Entity  = null;
            result.Message = "An email has been sent with instructions for recovering your password";
            result.Success = true;

            return(result);
        }
コード例 #7
0
        public Result GetAllListingsByNurseSelfAssessmentAnswer(List <NurseSelfAssessmentAnswersEntity> nurseSelfAssessmentAnswersList)
        {
            var result = new Result();

            try
            {
                var con         = new DapperConnectionManager();
                var query       = new QueryEntity();
                var credentials = new CredentialsManager();

                string        query_stringa  = @"DECLARE @Starter table (JobListingId  int);
                                        DECLARE @Quizz table ( JobListingId int, QuestionId int, [Value] Money)

                                        INSERT INTO @Starter 
                                        SELECT JobListingId FROM JobListings WHERE ApplicationDeadline > GETDATE() AND PublishStatus = 1   ;

                                        INSERT INTO @Quizz
                                        SELECT  
                                        JLC.JobListingId, QuestionId,  [Value]
                                        FROM  [JobListingCriteria] JLC
                                        INNER JOIN @Starter Stt
                                        ON JLC.JobListingId = Stt.JobListingId;";
                string        query_string   = query_stringa + "SELECT DISTINCT JobListingId FROM [JobListingCriteria]    ";
                List <String> select_queries = new List <String>();
                int           counter        = 0;
                foreach (NurseSelfAssessmentAnswersEntity NAAEntity in nurseSelfAssessmentAnswersList)
                {
                    query_string += String.Format("INTERSECT (SELECT DISTINCT JobListingId FROM  [JobListingCriteria] WHERE QuestionId = {0} AND Value <= {1} ) ", NAAEntity.QuestionId, NAAEntity.Value);



                    counter++;
                }

                query.Query = query_string;
                return(con.ExecuteQuery <int>(query));
            }
            catch (Exception ex)
            {
                if (result == null)
                {
                    result = new Result();
                }
                Logger.Log(ex);
                result.Entity  = null;
                result.Success = false;
                result.Message = ex.Message;
            }
            return(result);
        }
コード例 #8
0
        public Result GetPotentialApplicantsByCriteria(List <JobListingCriteriaEntity> criteria)
        {
            var result = new Result();

            try
            {
                var           con            = new DapperConnectionManager();
                var           query          = new QueryEntity();
                var           credentials    = new CredentialsManager();
                string        query_stringa  = @"DECLARE @Starter table (defaultQuizId  int);
                                        DECLARE @Quizz table ( UserId int, QuestionId int, [Value] Money)

                                        INSERT INTO @Starter 
                                        SELECT defaultQuizId FROM Users WHERE  defaultQuizId <> 0 OR defaultQuizId <> NULL;

                                        INSERT INTO @Quizz
                                        SELECT  
                                        UserId, QuestionId,  [Value]
                                        FROM NurseSelfAssessmentAnswers NSAA
                                        INNER JOIN @Starter Stt
                                        ON NSAA.UserQuizId = Stt.defaultQuizId;";
                string        query_string   = query_stringa + "SELECT DISTINCT UserId FROM @Quizz    ";
                List <String> select_queries = new List <String>();
                int           counter        = 0;
                foreach (JobListingCriteriaEntity criterion in criteria)
                {
                    query_string += String.Format("INTERSECT (SELECT DISTINCT UserId FROM @Quizz WHERE QuestionId = {0} AND Value >= {1} ) ", criterion.QuestionId, criterion.Value);



                    counter++;
                }

                query.Query = query_string;
                return(con.ExecuteQuery <int>(query));
            }
            catch (Exception ex)
            {
                if (result == null)
                {
                    result = new Result();
                }
                Logger.Log(ex);
                result.Entity  = null;
                result.Success = false;
                result.Message = ex.Message;
            }
            return(result);
        }
コード例 #9
0
        private Result ValidateEmployer(JobListingEntity entity)
        {
            var result = new Result();

            try
            {
                var con         = new DapperConnectionManager();
                var query       = new QueryEntity();
                var credentials = new CredentialsManager();

                // Check if employer is valid

                query.Query  = @"SELECT * FROM Employers
                            where EmployerID = @EmployerID and Active = 1";
                query.Entity = entity;
                result       = con.ExecuteQuery <UserEntity>(query);

                if (!result.Success)
                {
                    result.Message = "Query Error";
                    return(result);
                }
                var r = (IEnumerable <UserEntity>)result.Entity;

                var employer = r.FirstOrDefault();

                if (employer == null)
                {
                    result.Message = "Employer not exist";
                    result.Success = false;
                    result.Entity  = null;
                    return(result);
                }
            }
            catch (Exception ex)
            {
                if (result == null)
                {
                    result = new Result();
                }
                Logger.Log(ex);
                result.Entity  = null;
                result.Success = false;
                result.Message = "An error occurred";
            }
            return(result);
        }
コード例 #10
0
        public Result LoginApna(UserEntity entity)
        {
            var result = new Result();

            try
            {
                var con         = new DapperConnectionManager();
                var query       = new QueryEntity();
                var credentials = new CredentialsManager();
                entity.Email = entity.Email.Trim().ToLower();
                query.Query  = @"SELECT * FROM Users
                            where Email = @Email and Active = 1 and ApnaUser = 1";
                query.Entity = entity;
                result       = con.ExecuteQuery <UserEntity>(query);

                if (!result.Success)
                {
                    result.Message = "Login error";
                    return(result);
                }

                var r = (IEnumerable <UserEntity>)result.Entity;

                var user = r.FirstOrDefault();

                if (user == null)
                {
                    var resultRegisterUser = RegisterUserApna(entity, con);
                    if (!resultRegisterUser.Success)
                    {
                        return(resultRegisterUser);
                    }
                    user = (UserEntity)resultRegisterUser.Entity;
                }
                user.Token    = credentials.GenerateUserToken(user);
                result.Entity = user;
            }
            catch (Exception ex)
            {
                Logger.Log(ex);
                result.Entity  = null;
                result         = result ?? new Result(false);
                result.Message = "An error occurred";
            }

            return(result);
        }
コード例 #11
0
        public Result GetAllListingsByEmployerV2(EmployerEntity employer)
        {
            var result = new Result();

            try
            {
                var credentials = new CredentialsManager();

                var con   = new DapperConnectionManager();
                var query = new QueryEntity
                {
                    Entity = employer,
                    Query  = @"SELECT *
                          FROM JobListings
                          WHERE EmployerId= @EmployerId
                    "
                };

                result = con.ExecuteQuery <JobListingEntity>(query);
                var listing_list = (List <JobListingEntity>)result.Entity;

                var formatted_listing_list = new List <dynamic>();
                var listing_cri_man        = new JobListingCriteriaManager();
                foreach (JobListingEntity listing in listing_list)
                {
                    var criteria           = (List <JobListingCriteriaEntity>)listing_cri_man.GetCriteriaByListingId(listing.JobListingId).Entity;
                    var formatted_Criteria = transformCriteria(criteria, Mode.DICTQuestionIdValue);
                    listing.JobListingCriteria_Dict_QuestionID_Value = formatted_Criteria;
                }

                result.Entity = listing_list;
                return(result);
            }
            catch (Exception ex)
            {
                if (result == null)
                {
                    result = new Result();
                }
                Logger.Log(ex);
                result.Entity  = null;
                result.Success = false;
                result.Message = "An error occurred" + ex.Message;
            }
            return(result);
        }
コード例 #12
0
        public Result GetListingById(int listingId)
        {
            var result = new Result();

            try
            {
                var credentials = new CredentialsManager();

                var con   = new DapperConnectionManager();
                var query = new QueryEntity
                {
                    Entity = new { JobListingId = listingId },
                    Query  = @"SELECT *
                          FROM JobListings
                          where JobListingId = @JobListingId"
                };


                result = con.ExecuteGetOneItemQuery <JobListingEntity>(query);

                var listing         = (JobListingEntity)result.Entity;
                var listing_cri_man = new JobListingCriteriaManager();


                var criteria = (List <JobListingCriteriaEntity>)listing_cri_man.GetCriteriaByListingId(listing.JobListingId).Entity;
                listing.JobListingCriteria = criteria;

                result.Entity = listing;

                return(result);
            }
            catch (Exception ex)
            {
                if (result == null)
                {
                    result = new Result();
                }
                Logger.Log(ex);
                result.Entity  = null;
                result.Success = false;
                result.Message = "An error occurred" + ex.Message;
            }
            return(result);
        }
コード例 #13
0
        public Result LogIn(AdministratorEntity entity)
        {
            var con         = new DapperConnectionManager();
            var query       = new QueryEntity();
            var credentials = new CredentialsManager();

            entity.Username = entity.Username.Trim().ToLower();
            query.Query     = @"SELECT * FROM Administrators
                            where Username = @Username";
            query.Entity    = entity;
            var result = con.ExecuteQuery <AdministratorEntity>(query);

            if (!result.Success)
            {
                result.Message = "Login error";
                return(result);
            }

            var r = (IEnumerable <AdministratorEntity>)result.Entity;

            var admin = r.FirstOrDefault();

            if (admin == null)
            {
                result.Message = "User not found";
                result.Success = false;
                return(result);
            }
            var password = credentials.EncodePassword(entity.Password, admin.Hash);

            if (password == admin.Password)
            {
                admin.Hash     = null;
                admin.Password = null;
                admin.Token    = credentials.GenerateAdminToken(admin);
                result.Entity  = admin;
                return(result);
            }

            result.Message = "Incorrect password";
            result.Success = false;
            return(result);
        }
コード例 #14
0
        public Result GetAllListings()
        {
            var result = new Result();

            try
            {
                var credentials = new CredentialsManager();

                var con   = new DapperConnectionManager();
                var query = new QueryEntity
                {
                    Entity = new { },
                    Query  = @"SELECT *
                          FROM JobListings
                    "
                };

                result = con.ExecuteQuery <JobListingEntity>(query);
                var listing_list = (List <JobListingEntity>)result.Entity;

                var listing_cri_man = new JobListingCriteriaManager();
                foreach (JobListingEntity listing in listing_list)
                {
                    var criteria = (List <JobListingCriteriaEntity>)listing_cri_man.GetCriteriaByListingId(listing.JobListingId).Entity;
                    listing.JobListingCriteria = criteria;
                }

                result.Entity = listing_list;
                return(result);
            }
            catch (Exception ex)
            {
                if (result == null)
                {
                    result = new Result();
                }
                Logger.Log(ex);
                result.Entity  = null;
                result.Success = false;
                result.Message = "An error occurred" + ex.Message;
            }
            return(result);
        }
コード例 #15
0
        /// <summary>
        /// Use for login API with TOKEN
        /// </summary>
        /// <param name="token"> JWT Token String  </param>
        /// <returns></returns>
        public Result Login(string token)
        {
            var credentials = new CredentialsManager();
            var result      = credentials.ValidateEmployerToken(token);
            var con         = new DapperConnectionManager();
            var query       = new QueryEntity();

            if (!result.Success)
            {
                return(result);
            }

            var employer = (EmployerEntity)result.Entity;

            if (employer == null)
            {
                return(new Result(false));
            }


            query.Entity = new { EmployerID = employer.EmployerId };
            query.Query  = @"SELECT * FROM Employers
                            where EmployerID = @EmployerID and Active = 1 and ApnaUser = 0";

            result = con.ExecuteQuery <EmployerEntity>(query);

            if (!result.Success)
            {
                result         = null;
                result.Message = "Login error";
                return(result);
            }

            var r = (IEnumerable <EmployerEntity>)result.Entity;

            employer          = r.FirstOrDefault();
            employer.Password = null;
            employer.Hash     = null;
            result.Entity     = employer;
            return(result);
        }
コード例 #16
0
        public Result Login(string token)
        {
            var credentials = new CredentialsManager();
            var result      = credentials.ValidateUserToken(token);
            var con         = new DapperConnectionManager();
            var query       = new QueryEntity();

            if (!result.Success)
            {
                return(result);
            }

            var user = (UserEntity)result.Entity;



            query.Entity = new { UserId = user.UserId };
            query.Query  = @"SELECT * FROM Users
                            where UserId = @UserId and Active = 1 and ApnaUser = 0";

            result = con.ExecuteQuery <UserEntity>(query);

            if (!result.Success)
            {
                result         = null;
                result.Message = "Login error";
                return(result);
            }

            var r = (IEnumerable <UserEntity>)result.Entity;

            user          = r.FirstOrDefault();
            user.Password = null;
            user.Hash     = null;
            user.Token    = token;
            result.Entity = user;
            return(result);
        }
コード例 #17
0
        // To hide the Listing
        public Result DeleteJobListing(JobListingEntity entity, EmployerEntity employer)
        {
            var result = new Result();

            try
            {
                var con         = new DapperConnectionManager();
                var query       = new QueryEntity();
                var credentials = new CredentialsManager();

                // confirm if the employer is the one that deleting
                if (employer.EmployerId != entity.EmployerId)
                {
                    result.Message = "Forbidden operation";
                    result.Success = false;
                    return(result);
                }

                // create a query for hiding the listing
                query.Entity = entity;
                query.Query  = @"UPDATE JobListings set Hidden = 1 WHERE JobListingId = @JobListingId";
                con.ExecuteQuery(query);
                result.Message = result.Success ? "The listing has been deleted" : "An error has occurred";
                return(result);
            }
            catch (Exception ex)
            {
                if (result == null)
                {
                    result = new Result();
                }
                Logger.Log(ex);
                result.Entity  = null;
                result.Success = false;
                result.Message = "An error occurred";
            }
            return(result);
        }
コード例 #18
0
        private Result RegisterUserApna(UserEntity entity, DapperConnectionManager con)
        {
            var query = new QueryEntity();

            entity.CreateDate = DateTime.Now;
            entity.ModifyDate = DateTime.Now;

            var credentials = new CredentialsManager();
            var hash        = credentials.GenerateSalt();
            var hash2       = credentials.GenerateSalt();
            var password    = credentials.EncodePassword(hash2, hash);

            entity.Hash     = hash;
            entity.Password = password;
            entity.ApnaUser = true;

            query.Entity = entity;
            query.Query  = @"INSERT INTO Users (Email, Name, Password, Hash, CreateDate, ModifyDate, ApnaMemberId, Country, Suburb, State, PostalCode, ApnaUser) 
                            VALUES(@Email, @Name, @Password, @Hash, @CreateDate, @ModifyDate, @ApnaMemberId, @Country, @Suburb, @State, @PostalCode, @ApnaUser )";

            var result = con.InsertQuery(query);

            if (result.Success)
            {
                entity.UserId   = (int)result.Entity;
                entity.Password = "";
                entity.Hash     = "";
                entity.Token    = credentials.GenerateUserToken(entity);
                result.Entity   = entity;

                Task.Run(() => new EmailManager().SendEmail(entity.Email, DL.Models.EmailType.Welcome, new
                {
                    CurrentUserName  = entity.Name,
                    CurrentUserEmail = entity.Email
                }));
            }
            return(result);
        }
コード例 #19
0
        public Result Register(UserEntity entity)
        {
            var result = new Result();

            try
            {
                if (entity.Password.Length < 6)
                {
                    result         = new Result(false);
                    result.Message = "Password length invalid";
                    return(result);
                }

                var con   = new DapperConnectionManager();
                var query = new QueryEntity();

                var credentials = new CredentialsManager();

                var hash = credentials.GenerateSalt();

                entity.Password = credentials.EncodePassword(entity.Password, hash);
                entity.Hash     = hash;
                if (!entity.Email.Contains("@") || entity.Email.Length < 3)
                {
                    result         = new Result(false);
                    result.Message = "Email invalid";
                    return(result);
                }
                entity.Email = entity.Email.Trim().ToLower();

                var queryCheckEmail = new QueryEntity()
                {
                    Entity = new { Email = entity.Email },
                    Query  = @"SELECT Email from Users where Email = @Email and Active = 1"
                };
                var resultCheckEmail = con.ExecuteQuery <UserEntity>(queryCheckEmail);
                if (!resultCheckEmail.Success)
                {
                    resultCheckEmail.Entity  = null;
                    resultCheckEmail.Success = false;
                    resultCheckEmail.Message = "An error occurred";
                    return(resultCheckEmail);
                }
                var checkEmail = (IEnumerable <UserEntity>)resultCheckEmail.Entity;
                if (checkEmail.Any())
                {
                    resultCheckEmail.Entity  = null;
                    resultCheckEmail.Success = false;
                    resultCheckEmail.Message = "The email is currently in use";
                    return(resultCheckEmail);
                }

                entity.CreateDate = DateTime.Now;
                entity.ModifyDate = DateTime.Now;

                query.Entity = entity;
                query.Query  = @"INSERT INTO Users (Email, Name, Password, Hash, CreateDate, ModifyDate) VALUES(@Email, @Name, @Password, @Hash, @CreateDate, @ModifyDate)";

                result = con.InsertQuery(query);
                if (result.Success)
                {
                    entity.UserId   = (int)result.Entity;
                    entity.Password = "";
                    entity.Hash     = "";
                    entity.Token    = credentials.GenerateUserToken(entity);
                    result.Entity   = entity;

                    Task.Run(() => new EmailManager().SendEmail(entity.Email, DL.Models.EmailType.Welcome, new {
                        CurrentUserName  = entity.Name,
                        CurrentUserEmail = entity.Email
                    }));
                }
                result.Message = result.Success ? "The user has been created" : "An error occurred";
            }
            catch (Exception ex)
            {
                if (result == null)
                {
                    result = new Result();
                }
                Logger.Log(ex);
                result.Entity  = null;
                result.Success = false;
                result.Message = "An error occurred";
            }
            return(result);
        }
コード例 #20
0
        public Result GetPotentialApplicantsByListingId(int jobListingId)
        {
            var result = new Result();

            try
            {
                var con         = new DapperConnectionManager();
                var query       = new QueryEntity();
                var credentials = new CredentialsManager();

                var JLM  = new JobListingManager();
                var JLCM = new JobListingCriteriaManager();

                //Get Listing

                var listing = (JobListingEntity)JLM.GetListingById(jobListingId).Entity;
                if (listing == null)
                {
                    result.Success = false;
                    result.Message = "Listing not exist";
                    return(result);
                }


                listing.maxSalary = listing.maxSalary == 0 ? 200000 : listing.maxSalary;
                listing.minSalary = listing.minSalary == 0 ? 40000 : listing.minSalary;



                // get criteria
                var Listing_Re = JLCM.GetCriteriaByListingId(jobListingId);
                if (!Listing_Re.Success)
                {
                    result.Success = false;
                    result.Message = Listing_Re.Message;
                    return(result);
                }
                var criteria = (List <JobListingCriteriaEntity>)Listing_Re.Entity;

                // Assemble inner join query
                string        query_string   = String.Format(@"WITH SRC AS (SELECT UserId FROM Users WHERE {0} > = minsalary  AND maxsalary >=  {1} AND IsLookingForJob = 1 ) SELECT DISTINCT T0.UserId FROM SRC AS T0 ", listing.maxSalary, listing.minSalary);
                List <String> select_queries = new List <String>();
                int           counter        = 1;
                foreach (JobListingCriteriaEntity criterion in criteria)
                {
                    /*                    select_queries.Add(String.Format(" (SELECT UserId FROM NurseSelfAssessmentAnswers WHERE AspectId = {0} AND Value >= {1} ) AS T{2} ON H.UserId = T{2}.UserId "
                     *                      , criterion.AspectId, criterion.Value , counter));*/
                    //query_string += String.Format(" INNER JOIN (SELECT DISTINCT UserId FROM NurseSelfAssessmentAnswers WHERE AspectId = {0} AND Value >= {1} ) AS T{2} ON T{3}.UserId = T{2}.UserId ", criterion.AspectId, criterion.Value, counter, counter - 1);
                    query_string += String.Format("INTERSECT (SELECT UserId FROM NurseSelfAssessmentAnswers WHERE QuestionId = {0} AND Value >= {1} ) ", criterion.QuestionId, criterion.Value);

                    counter++;
                }

                query.Query = query_string;
                return(con.ExecuteQuery <int>(query));
            }
            catch (Exception ex)
            {
                if (result == null)
                {
                    result = new Result();
                }
                Logger.Log(ex);
                result.Entity  = null;
                result.Success = false;
                result.Message = ex.Message;
            }
            return(result);
        }
コード例 #21
0
        public Result PublishJobListing(JobListingEntity entity, EmployerEntity employer)
        {
            //Validate required fields
            var result = new Result();

            try
            {
                var con         = new DapperConnectionManager();
                var query       = new QueryEntity();
                var credentials = new CredentialsManager();


                // check if the listing has required fields
                if (entity.JobListingId != 0)
                {
                    entity.PublishStatus = true;
                }


                entity.ModificationDate = DateTime.Now;

                // TODO : check for each element type and length



                query.Entity = entity;

                /*                query.Query = @"UPDATE [dbo].[JobListings] set
                 *                                         [EmployerId] = @EmployerId
                 *                                         ,[Title] = @Title
                 *                                         ,[NurseType] = ,@NurseType
                 *                                         ,[SpecialRequirements] = @SpecialRequirements
                 *                                         ,[PublishStatus] = @PublishStatus
                 *                                         ,[MinSalary] = @MinSalary
                 *                                         ,[MaxSalary] = @MaxSalary
                 *                                         ,[ApplicationDeadline] = @ApplicationDeadline
                 *                                         ,[ModificationDate] = @ModificationDate
                 *                                         ,[Area] = @Area
                 *                                         ,[State] = @State
                 *                                         ,[Country] = @Country
                 *                                         ,[Suburb] = @Suburb
                 *                                         ,[PostalCode] = @PostalCode
                 *                                         ,[AddressLine1] = @AddressLine1
                 *                                         ,[AddressLine2] = @AddressLine2
                 *                                         ,[Completed] = @Completed
                 *                                         ,[JobType] =@JobType
                 *                                   WHERE JobListingId = @JobListingId";*/

                query.Query = @"UPDATE [dbo].[JobListings] set [PublishStatus] = @PublishStatus  WHERE JobListingId = @JobListingId";
                result      = con.InsertQuery(query);


                return(result);
            }
            catch (Exception ex)
            {
                if (result == null)
                {
                    result = new Result();
                }
                Logger.Log(ex);
                result.Entity  = null;
                result.Success = false;
                result.Message = "An error occurred";
            }
            return(result);
        }
コード例 #22
0
        public Result EditJobListing(JobListingEntity entity)
        {
            var result = new Result();

            try
            {
                var con         = new DapperConnectionManager();
                var query       = new QueryEntity();
                var credentials = new CredentialsManager();

                // Check if employer is valid

                // check if the listing has required fields
                if (entity.Title == null ||
                    entity.NurseType == null ||
                    entity.Suburb == null)
                {
                    entity.PublishStatus = false;
                }

                entity.ModificationDate = DateTime.Now;

                // TODO : check for each element type and length



                query.Entity = entity;
                query.Query  = @"UPDATE JobListings SET  
                                            [Title] = ISNULL( @Title , Title ) ,
                                            [NurseType] = ISNULL( @NurseType , NurseType ) ,
                                            [SpecialRequirements] = ISNULL( @SpecialRequirements , SpecialRequirements ) ,
                                            [PublishStatus] = ISNULL( @PublishStatus , PublishStatus ) ,
                                            [MinSalary] = ISNULL( @MinSalary , MinSalary ) ,
                                            [MaxSalary] = ISNULL( @MaxSalary , MaxSalary ) ,
                                            [ApplicationDeadline] = ISNULL( @ApplicationDeadline , ApplicationDeadline ) ,
                                            [ModificationDate] = ISNULL( @ModificationDate , ModificationDate ) ,
                                            [Area] = ISNULL( @Area , Area ) ,
                                            [State] = ISNULL( @State , State ) ,
                                            [Country] = ISNULL( @Country , Country ) ,
                                            [Suburb] = ISNULL( @Suburb , Suburb ) ,
                                            [PostalCode] = ISNULL( @PostalCode , PostalCode ) ,
                                            [AddressLine1] = ISNULL( @AddressLine1 , AddressLine1 ) ,
                                            [AddressLine2] = ISNULL( @AddressLine2 , AddressLine2 ) ,
                                            [Completed] = ISNULL( @Completed , Completed ) ,
                                            [JobType] = ISNULL( @JobType , JobType )   
                                     WHERE JobListingId = @JobListingId";


                result = con.ExecuteQueryUnScoped(query);
                return(result);
            }
            catch (Exception ex)
            {
                if (result == null)
                {
                    result = new Result();
                }
                Logger.Log(ex);
                result.Entity  = null;
                result.Success = false;
                result.Message = "An error occurred";
            }
            return(result);
        }
コード例 #23
0
        public Result ResetPassword(EmployerEntity entity)
        {
            var result = new Result();

            try
            {
                //Double validation
                var credentials = new CredentialsManager();

                result = credentials.ValidateUserToken(entity.Token, true);
                if (!result.Success)
                {
                    return(result);
                }
                var employer = (EmployerEntity)result.Entity;

                var con   = new DapperConnectionManager();
                var query = new QueryEntity();

                //GET the user to check password
                query.Query  = @"SELECT * FROM Employers
                            where EmployerID = @EmployerID and Active = 1";
                query.Entity = employer;

                result = con.ExecuteQuery <EmployerEntity>(query);

                if (!result.Success)
                {
                    result.Message = "Validation error";
                    return(result);
                }

                var r = (IEnumerable <EmployerEntity>)result.Entity;

                employer = r.FirstOrDefault();

                if (employer == null)
                {
                    result.Message = "Validation error";
                    result.Success = false;
                    return(result);
                }

                var newHash = credentials.GenerateSalt();

                entity.Hash     = newHash;
                entity.Password = credentials.EncodePassword(entity.Password, newHash);

                query.Query  = @"Update Employers Set Password = @Password, Hash = @Hash
                            where EmployerID = @EmployerID";
                query.Entity = new { EmployerID = employer.EmployerId, Hash = entity.Hash, Password = entity.Password };

                result         = con.ExecuteQuery(query);
                result.Message = result.Success ? "The user password has been updated" : "An error has occurred";
            }
            catch (Exception ex)
            {
                Logger.Log(ex);
                result         = result ?? new Result(false);
                result.Message = "An error occurred";
                throw;
            }

            return(result);
        }
コード例 #24
0
        public Result SendEmail(string from, IEnumerable <string> tos, EmailType type, object model, IEnumerable <Attachment> attachments = null)
        {
            EmailEntity entity = new EmailEntity();

            try
            {
                var message = new MailMessage()
                {
                    From       = new MailAddress(ConfigurationManager.AppSettings["configuration.email.from"], ConfigurationManager.AppSettings["configuration.email.fromName"] ?? ConfigurationManager.AppSettings["configuration.email.from"]),
                    IsBodyHtml = true,
                };

                foreach (var to in tos)
                {
                    message.To.Add(to);
                }

                if (attachments != null)
                {
                    foreach (var attachment in attachments)
                    {
                        message.Attachments.Add(attachment);
                    }
                }

                var con   = new DapperConnectionManager();
                var query = new QueryEntity();

                query.Query  = @"SELECT * FROM Emails
                            where Type = @Type";
                query.Entity = new { Type = type.ToString() };

                var result = con.ExecuteQuery <EmailEntity>(query);

                if (!result.Success)
                {
                    return(result);
                }

                entity = ((IEnumerable <EmailEntity>)result.Entity).FirstOrDefault();



                dynamic renderModel = new ExpandoObject();

                AddProperty(renderModel, "SiteUrl", ConfigurationManager.AppSettings["mnf.website"] ?? System.Web.HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority));
                AddProperty(renderModel, "AssetUrl", string.Join("/", ConfigurationManager.AppSettings["mnf.content"] ?? System.Web.HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority), "assets"));

                AddProperty(renderModel, "EmailType", entity.Type);

                AddProperty(renderModel, "EmailTo", string.Join(";", tos.FirstOrDefault()));
                AddProperty(renderModel, "EmailFrom", message.From);

                var currentUserToken = System.Web.HttpContext.Current?.Request?.Cookies?["MNFCMS"]?.Value ?? System.Web.HttpContext.Current?.Request?.Headers?["Authorization"] ?? string.Empty;

                var credentialsManager = new CredentialsManager();
                var currentUserResult  = credentialsManager.ValidateUserToken(currentUserToken);
                if (!currentUserResult.Success)
                {
                    currentUserResult = credentialsManager.ValidateAdminToken(currentUserToken);
                }

                if (currentUserResult.Success)
                {
                    AddProperty(renderModel, "UserId", (currentUserResult.Entity as UserEntity)?.UserId ?? (currentUserResult.Entity as AdministratorEntity)?.AdministratorId);
                    AddProperty(renderModel, "UserName", (currentUserResult.Entity as UserEntity)?.Name ?? (currentUserResult.Entity as AdministratorEntity)?.Name ?? (currentUserResult.Entity as AdministratorEntity)?.Username);
                    AddProperty(renderModel, "UserEmail", (currentUserResult.Entity as UserEntity)?.Email);
                }


                foreach (var prop in model.GetType().GetProperties())
                {
                    AddProperty(renderModel, prop.Name, prop.GetValue(model));
                }

                var renderResult = RenderEmail(entity, renderModel) as Result;

                if (renderResult.Success)
                {
                    message.Body    = renderResult.Message;
                    message.Subject = entity.Title;

                    foreach (var prop in renderModel as IDictionary <string, object> )
                    {
                        message.Subject = message.Subject.Replace($"@Model.{prop.Key}", prop.Value?.ToString());
                    }

                    MailClient.Send(message);
                }
                else
                {
                    //renderResult.Message += " ||| UserId: " + renderModel["UserId"] + " ||| UserName: "******"UserName"] + "  ||| UserEmail: " + renderModel["UserEmail"] ;

                    foreach (var prop in renderModel as IDictionary <string, object> )
                    {
                        renderResult.Message += " ||| " + prop.Key + prop.Value?.ToString();
                    }

                    return(renderResult);
                }
            }
            catch (Exception e)
            {
                Logger.Log(e);
                var res = new Result();
                res.Entity  = e;
                res.Message = "Failed in SendMail - Email Manager ||| " + e.InnerException + " ||| " + e.StackTrace + " ||| BODY: " + entity.Body + " ||| TITLE: " + entity.Title + " ||| TYPE: " + entity.Type + " ||| EMAILID: " + entity.EmailId;
                res.Success = false;
                return(res);
            }

            return(new Result(true));
        }
コード例 #25
0
        public Result SaveAnonReport(string data, string email, string name)
        {
            try
            {
                var rawData = JsonConvert.DeserializeObject <RawQuizDataEntity>(data);

                var con           = new DapperConnectionManager();
                var saveQuizQuery = new QueryEntity();
                var credentials   = new CredentialsManager();
                saveQuizQuery.Query = @"INSERT INTO AnonUserQuizzes (Email, Name, QuizId, DateVal, Results ,Completed, Type, Date, NurseType, ActiveWorking, Area, Setting, Age, Country, Suburb, PostCode, State, PatientsTitle, Qualification) VALUES (";

                AnonQuizResults results = new AnonQuizResults()
                {
                    results = rawData.selfAssessmentResults,
                    answers = new Dictionary <string, float>()
                };

                foreach (var answer in rawData.aspects)
                {
                    foreach (var set in answer.Value)
                    {
                        results.answers.Add(set.aspectId.ToString(), set.answer);
                    }
                }

                string NurseType     = rawData.aboutYouAnswers["32"].ToString();
                string ActiveWorking = rawData.aboutYouAnswers["67"].ToString();
                string Area          = rawData.aboutYouAnswers["71"].ToString();
                string Setting       = rawData.aboutYouAnswers["72"].ToString();
                string Age           = rawData.aboutYouAnswers["73"].ToString();
                string Patients      = rawData.aboutYouAnswers["76"].ToString();
                string Qualification = rawData.aboutYouAnswers["33"].ToString();

                var    addressDetails = rawData.aboutYouAnswers["69"].ToDictionary();
                string Country        = "";
                string Suburb         = "";
                string Postcode       = "";
                string State          = "";

                foreach (var detail in addressDetails)
                {
                    switch (detail.Key.ToLower())
                    {
                    case ("country"):
                        Country = detail.Value.ToString();
                        break;

                    case ("suburb"):
                        Suburb = detail.Value.ToString();
                        break;

                    case ("postalcode"):
                        Postcode = detail.Value.ToString();
                        break;

                    case ("state"):
                        State = detail.Value.ToString();
                        break;

                    default: break;
                    }
                }

                saveQuizQuery.Query += "'" + rawData?.email + "', ";
                saveQuizQuery.Query += "'" + rawData?.name + "', ";
                saveQuizQuery.Query += 1 + ", ";
                saveQuizQuery.Query += "CAST('" + DateTime.Now.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'") + "' AS DATETIME), ";
                saveQuizQuery.Query += "'" + JsonConvert.SerializeObject(results) + "', ";
                saveQuizQuery.Query += 1 + ", ";
                saveQuizQuery.Query += "'ASSESSMENT'" + ", ";
                saveQuizQuery.Query += "'" + rawData.date + "'" + ", ";
                saveQuizQuery.Query += "'" + NurseType + "'" + ", ";
                saveQuizQuery.Query += "'" + ActiveWorking + "'" + ", ";
                saveQuizQuery.Query += "'" + Area + "'" + ", ";
                saveQuizQuery.Query += "'" + Setting + "'" + ", ";
                saveQuizQuery.Query += "'" + Age + "'" + ", ";
                saveQuizQuery.Query += "'" + Country + "'" + ", ";
                saveQuizQuery.Query += "'" + Suburb + "'" + ", ";
                saveQuizQuery.Query += "'" + Postcode + "'" + ", ";
                saveQuizQuery.Query += "'" + State + "'" + ", ";
                saveQuizQuery.Query += "'" + Patients + "'" + ", ";
                saveQuizQuery.Query += "'" + Qualification + "'" + ")";

                return(con.ExecuteQuery <UserEntity>(saveQuizQuery));
            }
            catch (Exception e)
            {
                var res = new Result();
                res.Entity  = e;
                res.Success = false;
                res.Message = "THROWN";
                return(res);
            }
        }
コード例 #26
0
        public Result CreateJobListing(JobListingEntity entity, EmployerEntity employer)
        {
            var result = new Result();

            try
            {
                var con         = new DapperConnectionManager();
                var query       = new QueryEntity();
                var credentials = new CredentialsManager();

                // Check if employer is valid

                result = ValidateEmployer(entity);

                if (result.Success == false)
                {
                    return(result);
                }


                // check if the listing has required fields
                if (entity.Title == null ||
                    entity.NurseType == null ||
                    entity.Suburb == null)
                {
                    entity.PublishStatus = false;
                }

                entity.CreateDate       = DateTime.Now;
                entity.ModificationDate = entity.CreateDate;

                // TODO : check for each element type and length



                query.Entity = entity;
                query.Query  = @"INSERT INTO [dbo].[JobListings]
                                           ([EmployerId]
                                           ,[Title]
                                           ,[NurseType]
                                           ,[SpecialRequirements]
                                           ,[PublishStatus]
                                           ,[MinSalary]
                                           ,[MaxSalary]
                                           ,[CreateDate]
                                           ,[ApplicationDeadline]
                                           ,[ModificationDate]
                                           ,[Area]
                                           ,[State]
                                           ,[Country]
                                           ,[Suburb]
                                           ,[PostalCode]
                                           ,[AddressLine1]
                                           ,[AddressLine2]
                                           ,[Completed]
                                           ,[JobType])
                                     VALUES
                                           (@EmployerId 
                                           ,@Title
                                           ,@NurseType
                                           ,@SpecialRequirements
                                           ,@PublishStatus
                                           ,@MinSalary
                                           ,@MaxSalary
                                           ,@CreateDate
                                           ,@ApplicationDeadline
                                           ,@ModificationDate
                                           ,@Area
                                           ,@State
                                           ,@Country
                                           ,@Suburb
                                           ,@PostalCode
                                           ,@AddressLine1
                                           ,@AddressLine2
                                           ,@Completed
                                           ,@JobType)";


                result = con.ExecuteQuery <JobListingEntity>(query);
                return(result);
            }
            catch (Exception ex)
            {
                if (result == null)
                {
                    result = new Result();
                }
                Logger.Log(ex);
                result.Entity  = null;
                result.Success = false;
                result.Message = "An error occurred";
            }
            return(result);
        }
コード例 #27
0
        public Result ChangePassword(UserEntity entity)
        {
            var result = new Result();

            try
            {
                var credentials = new CredentialsManager();
                var con         = new DapperConnectionManager();
                var query       = new QueryEntity();

                //GET the user to check password
                query.Query  = @"SELECT * FROM Users
                            where UserId = @UserId and Active = 1";
                query.Entity = entity;
                result       = con.ExecuteQuery <UserEntity>(query);

                if (!result.Success)
                {
                    result.Entity  = null;
                    result.Message = "Validation error";
                    return(result);
                }

                var r = (IEnumerable <UserEntity>)result.Entity;

                var user = r.FirstOrDefault();

                if (user == null)
                {
                    result.Entity  = null;
                    result.Message = "Validation error";
                    result.Success = false;
                    return(result);
                }


                var password = credentials.EncodePassword(entity.Password, user.Hash);
                if (password != user.Password)
                {
                    result.Entity  = null;
                    result.Message = "Invalid password";
                    result.Success = false;
                    return(result);
                }

                var newHash = credentials.GenerateSalt();

                entity.Hash     = newHash;
                entity.Password = credentials.EncodePassword(entity.NewPassword, newHash);

                query.Query  = @"Update Users Set Password = @Password, Hash = @Hash
                            where UserId = @UserId";
                query.Entity = new { UserId = entity.UserId, Hash = entity.Hash, Password = entity.Password };

                result         = con.ExecuteQuery <UserEntity>(query);
                result.Message = result.Success ? "The user password has been updated" : "An error has occurred";
            }
            catch (Exception ex)
            {
                Logger.Log(ex);
                result         = result ?? new Result(false);
                result.Message = "An error occurred";
                throw;
            }

            return(result);
        }
コード例 #28
0
        public Result SaveAnonCareerReport(string data)
        {
            try
            {
                data = data.Replace("careerPathwaysCurrentAnswers", "answers");
                data = data.Replace("careerPathwaysResults", "results");


                var rawData = JsonConvert.DeserializeObject <RawCareerQuizDataEntity>(data);

                var con           = new DapperConnectionManager();
                var saveQuizQuery = new QueryEntity();
                var credentials   = new CredentialsManager();
                saveQuizQuery.Query = @"INSERT INTO AnonUserQuizzes (Email, Name, QuizId, DateVal, Results ,Completed, Type, Date, NurseType, ActiveWorking, Area, Setting, Age, Country, Suburb, PostCode, State, PatientsTitle, Qualification) VALUES (";

                string NurseType     = rawData.aboutYouAnswers["32"].ToString();
                string ActiveWorking = rawData.aboutYouAnswers["67"].ToString();
                string Area          = rawData.aboutYouAnswers["71"].ToString();
                string Setting       = rawData.aboutYouAnswers["72"].ToString();
                string Age           = rawData.aboutYouAnswers["73"].ToString();
                string Patients      = rawData.aboutYouAnswers["76"].ToString();
                string Qualification = rawData.aboutYouAnswers["33"].ToString();

                var    addressDetails = rawData.aboutYouAnswers["69"].ToDictionary();
                string Country        = "";
                string Suburb         = "";
                string Postcode       = "";
                string State          = "";

                foreach (var detail in addressDetails)
                {
                    switch (detail.Key.ToLower())
                    {
                    case ("country"):
                        Country = detail.Value.ToString();
                        break;

                    case ("suburb"):
                        Suburb = detail.Value.ToString();
                        break;

                    case ("postalcode"):
                        Postcode = detail.Value.ToString();
                        break;

                    case ("state"):
                        State = detail.Value.ToString();
                        break;

                    default: break;
                    }
                }


                var results = new CareerResults()
                {
                    results = rawData.results,
                    answers = rawData.answers
                };

                QuizResults newResult = new QuizResults();
                newResult.score            = new Dictionary <string, float>();
                newResult.scorePositives   = new Dictionary <string, List <string> >();
                newResult.scorePercentages = new Dictionary <string, int>();
                newResult.date             = results.results.date;

                foreach (var score in results.results.score)
                {
                    if (int.Parse(score.Key) <= 10)
                    {
                        newResult.score.Add(score.Key, score.Value);
                    }
                }

                foreach (var scorePositive in results.results.scorePositives)
                {
                    if (int.Parse(scorePositive.Key) <= 10)
                    {
                        newResult.scorePositives.Add(scorePositive.Key, scorePositive.Value);
                    }
                }

                foreach (var scorePercentage in results.results.scorePercentages)
                {
                    if (int.Parse(scorePercentage.Key) <= 10)
                    {
                        newResult.scorePercentages.Add(scorePercentage.Key, scorePercentage.Value);
                    }
                }

                results.results = newResult;


                saveQuizQuery.Query += "'" + "*****@*****.**" + "', ";
                saveQuizQuery.Query += "'" + "anon" + "', ";
                saveQuizQuery.Query += 2 + ", ";
                saveQuizQuery.Query += "CAST('" + DateTime.Now.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'") + "' AS DATETIME), ";
                saveQuizQuery.Query += "'" + JsonConvert.SerializeObject(results) + "', ";
                saveQuizQuery.Query += 1 + ", ";
                saveQuizQuery.Query += "'PATHWAY'" + ", ";
                saveQuizQuery.Query += "'" + results.results.date + "'" + ", ";
                saveQuizQuery.Query += "'" + NurseType + "'" + ", ";
                saveQuizQuery.Query += "'" + ActiveWorking + "'" + ", ";
                saveQuizQuery.Query += "'" + Area + "'" + ", ";
                saveQuizQuery.Query += "'" + Setting + "'" + ", ";
                saveQuizQuery.Query += "'" + Age + "'" + ", ";
                saveQuizQuery.Query += "'" + Country + "'" + ", ";
                saveQuizQuery.Query += "'" + Suburb + "'" + ", ";
                saveQuizQuery.Query += "'" + Postcode + "'" + ", ";
                saveQuizQuery.Query += "'" + State + "'" + ", ";
                saveQuizQuery.Query += "'" + Patients + "'" + ", ";
                saveQuizQuery.Query += "'" + Qualification + "'" + ")";

                return(con.ExecuteQuery <UserEntity>(saveQuizQuery));
            }
            catch (Exception e)
            {
                return(null);
            }
        }