예제 #1
0
        public Response CreateTerm(TermSetupRequest request)
        {
            var evaluationResult = setupRequestValidator.Validate(request);

            if (!evaluationResult.IsValid)
            {
                return(Response.CreateResponse(evaluationResult.Messages));
            }

            if (!request.TermId.IsEmpty())
            {
                return(Response.CreateResponse(new IllegalOperationException("No term id must be specified when creating new terms")));
            }

            if (HasOverlappingPeriods(request.ClubId, request.StartDate, request.EndDate))
            {
                return(Response.CreateResponse(new IllegalOperationException("This term overlaps with another one")));
            }

            if (HasExistingOpenTerms(request.ClubId))
            {
                return(Response.CreateResponse(new IllegalOperationException("There can only be one open term at any given time. Please close any existing open term.")));
            }

            try{
                evaluationRepository.AddTerm(request);
                termSearchEngine.UpdateCache();
                return(Response.CreateSuccessResponse());
            } catch (Exception ex) {
                return(Response.CreateResponse(ex));
            }
        }
예제 #2
0
        public Response UpdateTerm(TermSetupRequest request)
        {
            var evaluationResult = setupRequestValidator.Validate(request);

            if (!evaluationResult.IsValid)
            {
                return(Response.CreateResponse(evaluationResult.Messages));
            }

            if (request.TermId.IsEmpty())
            {
                return(Response.CreateResponse(new IllegalOperationException("TermId must be specified")));
            }

            var term = evaluationQuery.GetTerm(request.TermId.Value);

            if (term == null)
            {
                return(Response.CreateResponse(new EntityNotFoundException("The specified term does not exist")));
            }
            else if (term.ClubId != request.ClubId)
            {
                return(Response.CreateResponse(new IllegalOperationException("The specified term does not belong to this club")));
            }

            if (IsTermClosed(term))
            {
                return(Response.CreateResponse(new IllegalOperationException("A closed term cannot be updated")));
            }

            if (HasOverlappingPeriods(request.ClubId, request.StartDate, request.EndDate, request.TermId))
            {
                return(Response.CreateResponse(new IllegalOperationException("This term overlaps with another one")));
            }

            throw new NotImplementedException();
        }
예제 #3
0
        public void AddTerm(TermSetupRequest request)
        {
            ThrowIf.ArgumentIsNull(request);
            string sql = @"INSERT INTO EvaluationTerms (Guid, ClubId, Title, TermStatusId, StartDate, EndDate)
							VALUES(	
									@TermGuid, 
									(SELECT ClubId FROM Clubs WHERE Guid = @ClubGuid),
									@Title, 1, @StartDate, @EndDate							
							)"                            ;


            DynamicParameters p = new DynamicParameters();

            p.Add("@TermGuid", Guid.NewGuid().ToString());
            p.Add("@ClubGuid", request.ClubId.ToString());
            p.Add("@Title", request.Title);
            p.Add("@StartDate", request.StartDate);
            p.Add("@EndDate", request.EndDate);

            using (var connection = connectionFactory.Connect()) {
                connection.Open();
                connection.Execute(sql, p);
            }
        }
예제 #4
0
 public void UpdateTerm(TermSetupRequest request)
 {
     throw new System.NotImplementedException();
 }