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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
/// <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); }
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); }
// 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); }
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); }
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); }
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); }
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); }
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); }
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); }
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)); }
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); } }
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); }
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); }
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); } }