public async Task GetProjectsByUserGuid() { //Arrange var input = new GetProjectsByUserGuidDatabaseInput("67d537cb-123d-424b-a6d1-2cc5b2920430"); //Act var projectNames = await _trackTimeRepo.GetProjectsByUserGuid(input); //Assert Assert.NotNull(projectNames); }
/// <summary> /// Get the projects a user has been assigned /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task <List <GetProjectsByUserGuidDatabaseOutput> > GetProjectsByUserGuid(GetProjectsByUserGuidDatabaseInput input) { var p = new DynamicParameters(); p.Add("@p_UserGuid", input.UserGuid); IEnumerable <GetProjectsByUserGuidDatabaseOutput> projectNames; using (IDbConnection connection = new SqlConnection(_connectionString)) { //if the IEnumerable has a count of 0 throw an error since the user has not been assigned a project projectNames = await connection.QueryAsync <GetProjectsByUserGuidDatabaseOutput>("sp_GetProjectsByUserGuid", p, commandType : CommandType.StoredProcedure); } return(projectNames.ToList()); }
/// <summary> /// Gets the projects the user is assigne /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task <List <GetProjectsByUserGuidDatabaseOutput> > GetProjectsByUserGuid(GetProjectsByUserGuidDatabaseInput input) { return(await _ITrackTimeRepo.GetProjectsByUserGuid(input)); }
/// <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 })); }