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); }
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)); }
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); }
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)); }
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)); }