Esempio n. 1
0
        public async Task CreateNewTrackTimeRecord()
        {
            //Arrange
            var createNewRecordInput = new CreateNewTrackTimeRecordDatabaseInput("ca0e7040-b42c-4cf3-9b4e-4a9a06129cec", "ProjectPaper", "11/11/18", "11/17/18");


            var getTrackTimeInput = new GetTrackTimeDatabaseInput("ca0e7040-b42c-4cf3-9b4e-4a9a06129cec", "11/11/18", "11/17/18");
            var trackTimeList     = new List <GetTrackTimeDatabaseOutput>();

            //Act
            await _trackTimeRepo.CreateNewTrackTimeRecord(createNewRecordInput);

            trackTimeList = await _trackTimeRepo.GetTrackTime(getTrackTimeInput);

            //Assert
            Assert.NotNull(trackTimeList);
        }
Esempio n. 2
0
        public async Task <bool> IsTrackTimeRecordCreatedForProject(CreateNewTrackTimeRecordDatabaseInput input)
        {
            var p = new DynamicParameters();

            p.Add("@p_UserGuid", input.UserGuid);
            p.Add("@p_ProjectName", input.ProjectName);
            p.Add("@p_StartDate", input.StartDate);
            p.Add("@p_EndDate", input.EndDate);

            bool isCreated = false;

            using (IDbConnection connection = new SqlConnection(_connectionString))
            {
                isCreated = await connection.QueryFirstAsync <bool>("sp_IsProjectTrackTimeCreated", p, commandType : CommandType.StoredProcedure);
            }

            return(isCreated);
        }
Esempio n. 3
0
        /// <summary>
        /// Create a new TrackTime record
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task CreateNewTrackTimeRecord(CreateNewTrackTimeRecordDatabaseInput input)
        {
            var p = new DynamicParameters();

            p.Add("@p_UserGuid", input.UserGuid);
            p.Add("@p_ProjectName", input.ProjectName);
            p.Add("@p_StartDate", input.StartDate);
            p.Add("@p_EndDate", input.EndDate);

            var checkRecordExists = new DynamicParameters();

            checkRecordExists.Add("@p_UserGuid", input.UserGuid);
            checkRecordExists.Add("@p_StartDate", input.StartDate);
            checkRecordExists.Add("@p_EndDate", input.EndDate);

            using (IDbConnection connection = new SqlConnection(_connectionString))
            {
                await connection.ExecuteAsync("sp_CreateNewTrackTimeRecord", p, commandType : CommandType.StoredProcedure);
            }
        }
Esempio n. 4
0
 public async Task <bool> IsTrackTimeRecordCreatedForProject(CreateNewTrackTimeRecordDatabaseInput input)
 {
     return(await _ITrackTimeRepo.IsTrackTimeRecordCreatedForProject(input));
 }
Esempio n. 5
0
 /// <summary>
 /// Creates a new TrackTime record for new week
 /// </summary>
 /// <param name="input"></param>
 /// <returns></returns>
 public async Task CreateNewTrackTimeRecord(CreateNewTrackTimeRecordDatabaseInput input)
 {
     await _ITrackTimeRepo.CreateNewTrackTimeRecord(input);
 }
Esempio n. 6
0
        /// <summary>
        /// Create a new TrackTime record
        /// </summary>
        /// <returns></returns>
        public async Task <IActionResult> CreateNewTrackTimeRecord()
        {
            if (TempData.Peek("userName") == null)
            {
                return(UserNotAllowedAccess());
            }

            string startOfWeek;
            string lastOfWeek;

            //see if there was at least one track time record created
            bool anyUpdates = false;

            try
            {
                var getProjectNamesInput = new GetProjectsByUserGuidDatabaseInput(TempData.Peek("userGuid").ToString());

                //get the projects the user has been assigned
                var projectNamesList = await _ITrackTimeDomain.GetProjectsByUserGuid(getProjectNamesInput);

                //if the user has not been assigned a project yet throw this error
                if (projectNamesList.Count == 0)
                {
                    throw new TrackTimeRecordAlreadyExistsException("You do not have any projects assigned. Please contact your Project Manager or Manager.");
                }

                //Get today's date
                var currentDay = DateTime.Now;

                //using today's date get the start and end dates of the week
                startOfWeek = _ITrackTimeDomain.FirstDayOfWeek(currentDay).ToShortDateString();
                lastOfWeek  = _ITrackTimeDomain.LastDayOfWeek(currentDay).ToShortDateString();

                //foreach assigned project, create a new TrackTime record
                bool isRecordCreated = false;
                foreach (var project in projectNamesList)
                {
                    var createTrackTimeInput = new CreateNewTrackTimeRecordDatabaseInput(TempData.Peek("userGuid").ToString(),
                                                                                         project.ProjectName, startOfWeek,
                                                                                         lastOfWeek
                                                                                         );

                    //check to see if there already is a track time record for a proejct for the week
                    isRecordCreated = await _ITrackTimeDomain.IsTrackTimeRecordCreatedForProject(createTrackTimeInput);

                    //if no record exists then create one
                    if (!isRecordCreated)
                    {
                        await _ITrackTimeDomain.CreateNewTrackTimeRecord(createTrackTimeInput);

                        anyUpdates = true;
                    }
                }

                if (!anyUpdates)
                {
                    throw new TrackTimeRecordAlreadyExistsException($"A TrackTime entry has already been created for the week: {startOfWeek} - {lastOfWeek}");
                }
            }
            catch (TrackTimeRecordAlreadyExistsException ex)
            {
                //The user clicked 'Create New Record' for a week in which a record is already created
                TempData.Add("CreateTrackTimeError", ex.Message);

                return(RedirectTo("TrackTime", "DisplayTrackTimeDateRange"));
            }
            catch (Exception ex)
            {
                TempData.Add("CreateTrackTimeError", ex.Message);

                return(RedirectTo("TrackTime", "DisplayTrackTimeDateRange"));
            }

            return(RedirectToAction("DisplayTrackTimeDetails", "TrackTime", new { startDate = startOfWeek, endDate = lastOfWeek }));
        }