/// <summary>
 /// An AddedEcaItineraryValidationEntity is used to validate an itinerary when being created.
 /// </summary>
 /// <param name="addedEcaItinerary">The new itinerary.</param>
 /// <param name="project">The project the itinerary belongs to.</param>
 /// <param name="arrivalLocation">The arrival location.</param>
 /// <param name="departureLocation">The departure destination location.</param>
 public AddedEcaItineraryValidationEntity(AddedEcaItinerary addedEcaItinerary, Project project, Location arrivalLocation, Location departureLocation)
     : base(
         arrivalLocation: arrivalLocation,
         departureLocation: departureLocation)
 {
     this.Project        = project;
     this.AddedItinerary = addedEcaItinerary;
 }
예제 #2
0
        /// <summary>
        /// Creates a new itinerary in the eca datastore.
        /// </summary>
        /// <param name="itinerary">The new itinerary.</param>
        /// <returns>The itinerary that was added to the eca context.</returns>
        public async Task <Itinerary> CreateAsync(AddedEcaItinerary itinerary)
        {
            var project = await Context.Projects.FindAsync(itinerary.ProjectId);

            throwIfModelDoesNotExist(itinerary.ProjectId, project, typeof(Project));

            var arrivalLocation = await Context.Locations.FindAsync(itinerary.ArrivalLocationId);

            throwIfModelDoesNotExist(itinerary.ArrivalLocationId, arrivalLocation, typeof(Location));

            var departureLocation = await Context.Locations.FindAsync(itinerary.DepartureLocationId);

            throwIfModelDoesNotExist(itinerary.DepartureLocationId, departureLocation, typeof(Location));

            return(DoCreate(
                       addedItinerary: itinerary,
                       project: project,
                       arrivalLocation: arrivalLocation,
                       departureLocation: departureLocation));
        }
예제 #3
0
        private Itinerary DoCreate(AddedEcaItinerary addedItinerary, Project project, Location arrivalLocation, Location departureLocation)
        {
            ecaItineraryValidator.ValidateCreate(GetAddedEcaItineraryValidationEntity(
                                                     addedItinerary: addedItinerary,
                                                     project: project,
                                                     arrivalLocation: arrivalLocation,
                                                     departureLocation: departureLocation));

            var itinerary = new Itinerary();

            addedItinerary.Audit.SetHistory(itinerary);
            itinerary.ArrivalLocationId   = arrivalLocation.LocationId;
            itinerary.DepartureLocationId = departureLocation.LocationId;
            itinerary.EndDate             = addedItinerary.EndDate;
            itinerary.Name              = addedItinerary.Name;
            itinerary.ProjectId         = project.ProjectId;
            itinerary.StartDate         = addedItinerary.StartDate;
            itinerary.ItineraryStatusId = ItineraryStatus.InProgress.Id;
            this.Context.Itineraries.Add(itinerary);
            return(itinerary);
        }
예제 #4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="itinerary"></param>
 /// <returns></returns>
 public Task <Itinerary> CreateAsync(AddedEcaItinerary itinerary)
 {
     Contract.Requires(itinerary != null, "The itinerary must not be null.");
     return(Task.FromResult <Itinerary>(null));
 }
예제 #5
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="itinerary"></param>
 /// <returns></returns>
 public Itinerary Create(AddedEcaItinerary itinerary)
 {
     Contract.Requires(itinerary != null, "The itinerary must not be null.");
     return(null);
 }
예제 #6
0
 private AddedEcaItineraryValidationEntity GetAddedEcaItineraryValidationEntity(AddedEcaItinerary addedItinerary, Project project, Location arrivalLocation, Location departureLocation)
 {
     Contract.Requires(addedItinerary != null, "The added itinerary must not be null.");
     Contract.Requires(project != null, "The project must not be null.");
     Contract.Requires(arrivalLocation != null, "The arrival location must not be null.");
     Contract.Requires(departureLocation != null, "The departure destination location must not be null.");
     return(new AddedEcaItineraryValidationEntity(
                addedEcaItinerary: addedItinerary,
                project: project,
                arrivalLocation: arrivalLocation,
                departureLocation: departureLocation
                ));
 }