Example #1
0
        public static List <ErrorMessage> ValidateConfirmTransfer(
            WaterTransferRegistrationDto waterTransferRegistrationDto, WaterTransferDto waterTransferDto,
            UserDto currentUser)
        {
            var result = new List <ErrorMessage>();

            if (currentUser.Role.RoleID != (int)RoleEnum.Admin)
            {
                if (waterTransferRegistrationDto.WaterTransferTypeID == (int)WaterTransferTypeEnum.Selling &&
                    !waterTransferDto.SellerRegistration.Account.Users.Select(x => (int?)x.UserID)
                    .Contains(waterTransferRegistrationDto.UserID))
                {
                    result.Add(new ErrorMessage()
                    {
                        Message = "Confirming user does not match seller."
                    });
                }

                if (waterTransferRegistrationDto.WaterTransferTypeID == (int)WaterTransferTypeEnum.Buying &&
                    !waterTransferDto.BuyerRegistration.Account.Users.Select(x => (int?)x.UserID)
                    .Contains(waterTransferRegistrationDto.UserID))
                {
                    result.Add(new ErrorMessage()
                    {
                        Message = "Confirming user does not match buyer."
                    });
                }
            }

            return(result);
        }
Example #2
0
        public static WaterTransferDto ChangeWaterRegistrationStatus(RioDbContext dbContext, int waterTransferID,
                                                                     WaterTransferRegistrationDto waterTransferRegistrationDto,
                                                                     WaterTransferRegistrationStatusEnum waterTransferRegistrationStatusEnum)
        {
            var waterTransferRegistration = dbContext.WaterTransferRegistration
                                            .Single(x =>
                                                    x.WaterTransferID == waterTransferID &&
                                                    x.WaterTransferTypeID == waterTransferRegistrationDto.WaterTransferTypeID);

            waterTransferRegistration.WaterTransferRegistrationStatusID = (int)waterTransferRegistrationStatusEnum;
            waterTransferRegistration.StatusDate = DateTime.Now;
            dbContext.SaveChanges();
            dbContext.Entry(waterTransferRegistration).Reload();
            return(GetByWaterTransferID(dbContext, waterTransferID));
        }
Example #3
0
        public static List <ErrorMessage> ValidateCancelTransfer(
            WaterTransferRegistrationDto waterTransferRegistrationDto, WaterTransferDto waterTransferDto,
            UserDto currentUser)
        {
            var result = new List <ErrorMessage>();

            if (waterTransferDto.BuyerRegistration.IsRegistered || waterTransferDto.SellerRegistration.IsRegistered)
            {
                result.Add(new ErrorMessage()
                {
                    Message = "Cannot cancel transfer because one of the parties has already registered this transfer."
                });
            }

            if (currentUser.Role.RoleID != (int)RoleEnum.Admin)
            {
                if (waterTransferRegistrationDto.WaterTransferTypeID == (int)WaterTransferTypeEnum.Selling && !
                    waterTransferDto.SellerRegistration.Account.Users.Select(x => (int?)x.UserID)
                    .Contains(waterTransferRegistrationDto.UserID))
                {
                    result.Add(new ErrorMessage()
                    {
                        Message = "Canceling user does not match seller."
                    });
                }

                if (waterTransferRegistrationDto.WaterTransferTypeID == (int)WaterTransferTypeEnum.Buying && !
                    waterTransferDto.BuyerRegistration.Account.Users.Select(x => (int?)x.UserID)
                    .Contains(waterTransferRegistrationDto.UserID))
                {
                    result.Add(new ErrorMessage()
                    {
                        Message = "Canceling user does not match buyer."
                    });
                }
            }

            return(result);
        }
Example #4
0
        public IActionResult CancelTrade([FromRoute] int waterTransferID, [FromBody] WaterTransferRegistrationDto waterTransferRegistrationDto)
        {
            if (!_rioConfiguration.ALLOW_TRADING)
            {
                return(BadRequest());
            }

            var waterTransferDto = WaterTransfer.GetByWaterTransferID(_dbContext, waterTransferID);

            if (ThrowNotFound(waterTransferDto, "Water Transfer", waterTransferID, out var actionResult))
            {
                return(actionResult);
            }

            var currentUser = UserContext.GetUserFromHttpContext(_dbContext, HttpContext);

            var validationMessages = WaterTransfer.ValidateCancelTransfer(waterTransferRegistrationDto, waterTransferDto, currentUser);

            validationMessages.ForEach(vm => { ModelState.AddModelError(vm.Type, vm.Message); });

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            waterTransferDto = WaterTransfer.ChangeWaterRegistrationStatus(_dbContext, waterTransferID, waterTransferRegistrationDto,
                                                                           WaterTransferRegistrationStatusEnum.Canceled);
            var smtpClient   = HttpContext.RequestServices.GetRequiredService <SitkaSmtpClientService>();
            var mailMessages = GenerateCancelTransferEmail(_rioConfiguration.WEB_URL, waterTransferDto, smtpClient);

            foreach (var mailMessage in mailMessages)
            {
                SendEmailMessage(smtpClient, mailMessage);
            }

            return(Ok(waterTransferDto));
        }
        public static IEnumerable <WaterTransferRegistrationParcelDto> SaveParcels(RioDbContext dbContext, int waterTransferID, WaterTransferRegistrationDto waterTransferRegistrationDto)
        {
            // get the registration record
            var waterTransferRegistration = dbContext.WaterTransferRegistration.Single(x =>
                                                                                       x.WaterTransferID == waterTransferID && x.WaterTransferTypeID == waterTransferRegistrationDto.WaterTransferTypeID);

            // delete existing parcels registered
            var existingWaterTransferRegistrationParcels = dbContext.WaterTransferRegistrationParcel.Where(x => x.WaterTransferRegistrationID == waterTransferRegistration.WaterTransferRegistrationID);

            if (existingWaterTransferRegistrationParcels.Any())
            {
                dbContext.WaterTransferRegistrationParcel.RemoveRange(existingWaterTransferRegistrationParcels);
                dbContext.SaveChanges();
            }

            foreach (var waterTransferParcelDto in waterTransferRegistrationDto.WaterTransferRegistrationParcels)
            {
                var waterTransferRegistrationParcel = new WaterTransferRegistrationParcel
                {
                    WaterTransferRegistrationID = waterTransferRegistration.WaterTransferRegistrationID,
                    ParcelID            = waterTransferParcelDto.ParcelID,
                    AcreFeetTransferred = waterTransferParcelDto.AcreFeetTransferred
                };
                dbContext.WaterTransferRegistrationParcel.Add(waterTransferRegistrationParcel);
            }

            dbContext.SaveChanges();
            return(ListByWaterTransferRegistrationID(dbContext, waterTransferRegistration.WaterTransferRegistrationID));
        }
Example #6
0
        public ActionResult <List <WaterTransferDto> > SelectParcels([FromRoute] int waterTransferID, [FromBody] WaterTransferRegistrationDto waterTransferRegistrationDto)
        {
            if (!_rioConfiguration.ALLOW_TRADING)
            {
                return(BadRequest());
            }

            var waterTransferDto = WaterTransfer.GetByWaterTransferID(_dbContext, waterTransferID);

            if (ThrowNotFound(waterTransferDto, "Water Transfer", waterTransferID, out var actionResult))
            {
                return(actionResult);
            }
            var validationMessages = WaterTransferRegistrationParcel.ValidateParcels(waterTransferRegistrationDto.WaterTransferRegistrationParcels, waterTransferDto);

            validationMessages.ForEach(vm => { ModelState.AddModelError(vm.Type, vm.Message); });

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var waterTransferRegistrationParcelDtos = WaterTransferRegistrationParcel.SaveParcels(_dbContext, waterTransferID, waterTransferRegistrationDto);

            return(Ok(waterTransferRegistrationParcelDtos));
        }