/// <summary>
        /// Shows a detailed report of all the places that fit the criteria
        /// </summary>
        public ActionResult Report(CartoPlaceReportRequest report)
        {
            var model = InitModel();

            var political = new GeoPolitical(report);

            model.SelectedCountry   = political.Country;
            model.SelectedPlaceType = report.PlaceType;

            model.ReportFilters = report;
            model.ReportPlaces  = _cartoPlaceService.ReportPlaces(report);

            return(View(model));
        }
        /// <summary>
        /// Validates the data that will be used to create or update a place
        /// </summary>
        public ValidationServiceResponse <CartoPlaceInfo> ValidatePlace(CartoPlaceData data)
        {
            var place    = CreateCleanPlaceInfo(data);
            var response = new ValidationServiceResponse <CartoPlaceInfo>(place);

            // validate place info
            if (String.IsNullOrWhiteSpace(place.Name))
            {
                response.AddError("Name", "Place name is missing!");
            }

            // validate political info
            var political = new GeoPolitical(data);

            // country is required
            if (!political.IsCountryValid())
            {
                response.AddError("Country", "Country is missing or invalid!");
            }

            // region is only required if specified
            if (!political.IsRegionOptionalValid())
            {
                response.AddError("Region", "Region is invalid!");
            }

            // timezone cannot be empty or UTC
            if (!political.IsTimezoneOptionalButNotUTCValid())
            {
                response.AddError("Timezone", "Timezone is invalid!");
            }

            // TODO: check center/bounds


            // basic validation
            return(response);
        }
Exemplo n.º 3
0
 public CartoPlaceFormModel(CartoPlaceInfo place, CartoPlaceData data = null)
 {
     Place     = place;
     Data      = data ?? place.GetData();
     Political = new GeoPolitical(Data);
 }