public HttpResponseMessage PostListing(JobListingEntity jobListing)
        {
            //Woking , tested

            var result = new Result();

            //Employer vertification
            object objemployer = null;

            Request.Properties.TryGetValue("employer", out objemployer);
            if (objemployer == null)
            {
                return(Request.CreateResponse(HttpStatusCode.Unauthorized, new Result(false)));
            }
            var employer            = objemployer as EmployerEntity;
            var employerentity_full = (EmployerEntity)_employersManager.GetEmployerById(employer.EmployerId).Entity;

            if (employerentity_full.MembershipEndDate == DateTime.MinValue || employerentity_full.MembershipEndDate < (DateTime?)DateTime.Now)
            {
                // membership expired
                result         = new Result();
                result.Success = false;
                result.Message = "Membership expired";

                return(Request.CreateResponse(HttpStatusCode.Unauthorized, result));
            }


            jobListing.CreateDate       = DateTime.Now;
            jobListing.EmployerId       = employer.EmployerId;
            jobListing.ModificationDate = jobListing.CreateDate;
            result = _jobListingManager.CreateJobListingById(jobListing, employer.EmployerId);

            // return failed
            if (!result.Success)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, result));
            }


            // if success
            if (jobListing.JobListingCriteria != null || jobListing.JobListingCriteria.Count > 0)
            {
                var cri_res = _jobListingCriteriaManager.InsertCriteria(jobListing.JobListingCriteria);
            }

            //Result cri_result = null;
            var listingID = (int)result.Entity;
            var listing   = (JobListingEntity)_jobListingManager.GetListingById(listingID).Entity;

            result.Entity = listing;
            return(Request.CreateResponse(HttpStatusCode.Created, result));
        }
Beispiel #2
0
        public void CreateJobListingTest()
        {
            var manager = new JobListingManager();

            var listing = new JobListingEntity();

            System.Diagnostics.Debugger.Launch();
            listing.EmployerId = 1;

            var result = manager.CreateJobListingById(listing, 1);

            Assert.IsTrue(result.Success == true);
        }
        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);
        }
        // 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);
        }
        public HttpResponseMessage UpdateJobListing([FromBody] JobListingEntity joblisting)
        {
            var result = new Result();

            object objemployer = null;

            Request.Properties.TryGetValue("employer", out objemployer);
            if (objemployer == null)
            {
                return(Request.CreateResponse(HttpStatusCode.Unauthorized, new Result(false)));
            }
            var employer = objemployer as EmployerEntity;

            //get full entity
            result = _employersManager.GetEmployerById(joblisting.EmployerId);
            var employer_entity = (EmployerEntity)result.Entity;


            if (employer.EmployerId != employer_entity.EmployerId)
            {
                return(Request.CreateResponse(HttpStatusCode.Unauthorized, new Result(false)));
            }

            if (employer_entity.MembershipEndDate < (DateTime?)DateTime.Now)
            {
                joblisting.PublishStatus = false;
            }

            result = new Result();

            result = _jobListingManager.EditJobListing(joblisting);
            if (!result.Success)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, result));
            }
            result.Entity = _jobListingManager.GetListingById(joblisting.JobListingId).Entity;
            return(Request.CreateResponse(HttpStatusCode.OK, result));
        }
        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 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);
        }