Beispiel #1
0
        public async Task <ICollection <Timestamp> > GetTimestampsUnpaged(TimestampParameters timestampParameters)
        {
            var query = _db.Timestamps
                        .Include(t => t.Jobsite)
                        .Where(t => t.ClockedInStamp >= timestampParameters.FromDate &&
                               t.ClockedInStamp <= timestampParameters.ToDate &&
                               t.ClockedIn == false)
                        .OrderByDescending(t => t.ClockedInStamp);

            return(await query.ToListAsync());
        }
Beispiel #2
0
        public async Task <PagedList <Timestamp> > GetTimestamps(
            TimestampParameters timestampParameters)
        {
            var query = _db.Timestamps
                        .Include(t => t.AppUser)
                        .Include(t => t.Jobsite)
                        .Where(t => t.ClockedInStamp >= timestampParameters.FromDate &&
                               t.ClockedInStamp <= timestampParameters.ToDate &&
                               t.ClockedIn == false)
                        .OrderByDescending(t => t.ClockedInStamp);

            return(await PagedList <Timestamp> .ToPagedList(
                       query,
                       timestampParameters.PageNumber,
                       timestampParameters.PageSize));
        }
        public async Task <ActionResult <JobsiteDto> > GetJobsiteWithTimestamps(string moniker, [FromQuery] TimestampParameters timestampParameters)
        {
            try
            {
                //manager status
                var loggedInUser = await _userRepository.GetUser(_userAccessor.GetCurrentUsername());

                if (loggedInUser.Manager == false)
                {
                    return(Unauthorized(new RestError(HttpStatusCode.Unauthorized, new { Unauthorized = "Unauthorized to perform action" })));
                }

                var jobsite = await _repository.GetJobsiteAsync(moniker);

                if (jobsite == null)
                {
                    return(NotFound($"Could not find jobsite with moniker of {moniker}"));
                }

                //get the timestamps for the jobsite in paged format
                var pagedTimestamps = await _timestampRepository.GetTimestampsForJobByDate(jobsite, timestampParameters);

                jobsite.Timestamps = pagedTimestamps;

                //Create metadata based on PagedList pagination
                var metadata = new
                {
                    pagedTimestamps.TotalCount,
                    pagedTimestamps.PageSize,
                    pagedTimestamps.CurrentPage,
                    pagedTimestamps.HasNext,
                    pagedTimestamps.HasPrevious
                };

                //Add metadata to header
                Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata));

                var jobsiteDto = _mapper.Map <JobsiteWithTimestampsDto>(jobsite);

                //get all employees who visited this jobsite
                var jobsiteTimestamps = await _timestampRepository.GetTimestampsForJob(jobsite);

                var employees = TimestampActions.GetEmployeesFromJobsite(jobsiteTimestamps);
                jobsiteDto.EmployeesThatClocked = employees;

                return(Ok(jobsiteDto));
            }
            catch (Exception)
            {
                return(this.StatusCode(StatusCodes.Status500InternalServerError, "Server Error: Failed to retrieve jobsite."));
            }
        }
Beispiel #4
0
        public async Task <ActionResult <UserInfoWithHoursWorkedDto> > GetUserTimestampsFromJobsite(string moniker, [FromQuery] TimestampParameters timestampParameters)
        {
            try
            {
                //get current user
                var user = await _userRepository.GetUser(_userAccessor.GetCurrentUsername());

                //find jobsite
                var jobsiteId = await _jobsiteRepository.GetJobsiteIdByMoniker(moniker);

                if (jobsiteId == 0)
                {
                    return(NotFound($"Error: jobsite '{moniker}' not found"));
                }

                //get user's timestamps by jobsite & date
                var filteredTimestamps = await _timestampRepository
                                         .GetTimestampsForJobByUser(user, moniker, timestampParameters);

                //add the timestamps to the user object
                user.Timestamps = filteredTimestamps;

                //Create MetaData
                var metadata = new
                {
                    filteredTimestamps.TotalCount,
                    filteredTimestamps.PageSize,
                    filteredTimestamps.CurrentPage,
                    filteredTimestamps.HasNext,
                    filteredTimestamps.HasPrevious
                };

                //Add metadata to header
                Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata));

                return(Ok(_mapper.Map <UserInfoWithHoursWorkedDto>(user)));
            }
            catch (Exception)
            {
                return(this.StatusCode(StatusCodes.Status500InternalServerError, "Server Error: Failed to query database."));
            }
        }
Beispiel #5
0
        public async Task <ActionResult <UserInfoWithHoursWorkedDto> > GetAllUserTimestamps([FromQuery] TimestampParameters timestampParameters)
        {
            try
            {
                //get current user
                var user = await _userRepository.GetUser(_userAccessor.GetCurrentUsername());

                //Get timestamps by date for the user
                var filteredTimestamps = await _timestampRepository.GetTimestampsForUserByDate(user, timestampParameters);

                user.Timestamps = filteredTimestamps;

                //Create MetaData
                var metadata = new
                {
                    filteredTimestamps.TotalCount,
                    filteredTimestamps.PageSize,
                    filteredTimestamps.CurrentPage,
                    filteredTimestamps.HasNext,
                    filteredTimestamps.HasPrevious
                };

                //Add metadata to header
                Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata));

                var userWithTimestamps = _mapper.Map <UserInfoWithHoursWorkedDto>(user);
                return(Ok(userWithTimestamps));
            }
            catch (Exception)
            {
                return(this.StatusCode(StatusCodes.Status500InternalServerError, "Server Error: Failed to retrieve user data"));
            }
        }