예제 #1
0
        public void FinishRequest()
        {
            FishingRecord record;

            // validate fields
            try
            {
                // date and time
                CommonPresenterStuff.ValidateDateEarlierThanNow(_view.DateTimeStart, "start date and time");
                CommonPresenterStuff.ValidateCronologicalDates(_view.DateTimeStart, _view.DateTimeEnd,
                                                               "start date and time", "end date and time");

                // location name
                CommonPresenterStuff.ValidateFieldNotEmpty(_view.Location, "location");

                // nature events
                CommonPresenterStuff.ValidateFieldNotEmpty(_view.Wind, "wind");
                CommonPresenterStuff.ValidateFieldNotEmpty(_view.MoonPhase, "moon phase");
                CommonPresenterStuff.ValidateFieldNotEmpty(_view.Tide, "tide");
            }
            catch (Exception e)
            {
                _view.ShowErrorMessage(e.Message);
                return;
            }

            // if fish catch or sale is empty, warn user
            if (_fishCatch.GetCaughtFish().Count == 0)
            {
                if (!_view.WarnUser(CommonPresenterStuff.WarnFieldEmptyMessage("fish catch")))
                {
                    return;
                }
            }
            if (_fishCatch.GetSoldFish().Count == 0)
            {
                if (!_view.WarnUser(CommonPresenterStuff.WarnFieldEmptyMessage("fish sale")))
                {
                    return;
                }
            }

            // try create record
            Winds      wind      = CommonPresenterStuff.GetWindEnum(_view.Wind);
            MoonPhases moonPhase = CommonPresenterStuff.GetMoonPhaseEnum(_view.MoonPhase);
            Tides      tide      = CommonPresenterStuff.GetTideEnum(_view.Tide);

            try
            {
                record = FishingRecordFactory.CreateFishingRecord(_view.DateTimeStart, _view.DateTimeEnd,
                                                                  _view.Location, wind, moonPhase, tide, _fishCatch);
            }
            catch (Exception)
            {
                _view.ShowErrorMessage(CommonPresenterStuff.ErrorMessage());
                return;
            }

            Finish(record);
        }
예제 #2
0
        public void FinishRequest(string inName, string inLatitude, string inLongitude, string inDepth, string inComment)
        {
            Location location;
            double   latitude, longitude, depth;

            // validate fields
            try
            {
                // location name
                CommonPresenterStuff.ValidateFieldNotEmpty(_view.LocationName, "name");

                // latitude
                CommonPresenterStuff.ValidateFieldNotEmpty(_view.Latitude, "latitude");
                latitude = CommonPresenterStuff.ValidateDoubleString(_view.Latitude, "latitude");
                CommonPresenterStuff.ValidateDoubleInRange(latitude, -90.0, 90.0, "latitude");

                // longitude
                CommonPresenterStuff.ValidateFieldNotEmpty(_view.Longitude, "longitude");
                longitude = CommonPresenterStuff.ValidateDoubleString(_view.Longitude, "longitude");
                CommonPresenterStuff.ValidateDoubleInRange(longitude, -180.0, 180.0, "longitude");

                // depth
                CommonPresenterStuff.ValidateFieldNotEmpty(_view.Depth, "depth");
                depth = CommonPresenterStuff.ValidateDoubleString(_view.Depth, "depth");
                CommonPresenterStuff.ValidateDoubleGreaterThan(depth, 0.0, "depth");
            }
            catch (Exception e)
            {
                _view.ShowErrorMessage(e.Message);
                return;
            }

            // if comment is empty, warn user
            if (_view.Comment == "")
            {
                if (!_view.WarnUser(CommonPresenterStuff.WarnFieldEmptyMessage("comment")))
                {
                    return;
                }
            }

            // try creating location
            try
            {
                location = LocationFactory.CreateLocation(inName, latitude, longitude, depth, inComment);
            }
            catch (Exception)
            {
                _view.ShowErrorMessage(CommonPresenterStuff.ErrorMessage());
                return;
            }

            Finish(location);
        }
예제 #3
0
        public void AddFishSaleRequest()
        {
            double mass, price;

            // validate fields
            try
            {
                // fish name
                CommonPresenterStuff.ValidateFieldNotEmpty(_view.FishName, "fish");

                // sold mass
                CommonPresenterStuff.ValidateFieldNotEmpty(_view.Mass, "mass");
                mass = CommonPresenterStuff.ValidateDoubleString(_view.Mass, "mass");
                CommonPresenterStuff.ValidateDoubleGreaterThan(mass, 0.0, "mass");

                // sale price
                CommonPresenterStuff.ValidateFieldNotEmpty(_view.Price, "price");
                price = CommonPresenterStuff.ValidateDoubleString(_view.Price, "price");
                CommonPresenterStuff.ValidateDoubleGreaterThan(price, 0.0, "price");
            }
            catch (Exception e)
            {
                _view.ShowErrorMessage(e.Message);
                return;
            }

            // try adding fish sale
            try
            {
                Object fishSale = new object[] { _view.FishName, mass, price };
                NotifyObservers(fishSale);
            }
            catch (FishSaleAlreadyAddedException)
            {
                _view.ShowErrorMessage("Fish sale has already been added");
                return;
            }
            catch (FishNotCaughtException)
            {
                _view.ShowErrorMessage("Fish must first be caught!");
                return;
            }
            catch (SaleMassGreaterThanCaughtMassException)
            {
                _view.ShowErrorMessage("Sale mass must be less or equal than caught mass!");
                return;
            }
            catch (Exception)
            {
                _view.ShowErrorMessage(CommonPresenterStuff.ErrorMessage());
            }

            _view.End();
        }
예제 #4
0
        public void AddFishCatchRequest()
        {
            double mass;

            // validate fields
            try
            {
                // fish name
                CommonPresenterStuff.ValidateFieldNotEmpty(_view.FishName, "fish");

                // caught mass
                CommonPresenterStuff.ValidateFieldNotEmpty(_view.Mass, "mass");
                mass = CommonPresenterStuff.ValidateDoubleString(_view.Mass, "mass");
                CommonPresenterStuff.ValidateDoubleGreaterThan(mass, 0.0, "mass");
            }
            catch (Exception e)
            {
                _view.ShowErrorMessage(e.Message);
                return;
            }

            // try adding fish catch
            try
            {
                object[] fishCatch = { _view.FishName, mass };
                NotifyObservers(fishCatch);
            }
            catch (FishCatchAlreadyExistsException)
            {
                _view.ShowErrorMessage("Fish has already been caught!");
                return;
            }
            catch (Exception)
            {
                _view.ShowErrorMessage(CommonPresenterStuff.ErrorMessage());
                return;
            }

            _view.End();
        }