public static WaterTransferDto CreateNew(RioDbContext dbContext, OfferDto offerDto, TradeDto tradeDto, PostingDto postingDto) { var waterTransfer = new WaterTransfer { OfferID = offerDto.OfferID, AcreFeetTransferred = offerDto.Quantity, TransferDate = offerDto.OfferDate }; var waterTransferRegistrationBuyer = new WaterTransferRegistration() { WaterTransfer = waterTransfer, WaterTransferTypeID = (int)WaterTransferTypeEnum.Buying, StatusDate = DateTime.Now, WaterTransferRegistrationStatusID = (int)WaterTransferRegistrationStatusEnum.Pending }; var waterTransferRegistrationSeller = new WaterTransferRegistration() { WaterTransfer = waterTransfer, WaterTransferTypeID = (int)WaterTransferTypeEnum.Selling, StatusDate = DateTime.Now, WaterTransferRegistrationStatusID = (int)WaterTransferRegistrationStatusEnum.Pending }; if (postingDto.PostingType.PostingTypeID == (int)PostingTypeEnum.OfferToSell) { waterTransferRegistrationSeller.AccountID = postingDto.CreateAccount.AccountID; waterTransferRegistrationBuyer.AccountID = tradeDto.CreateAccount.AccountID; } else { waterTransferRegistrationSeller.AccountID = tradeDto.CreateAccount.AccountID; waterTransferRegistrationBuyer.AccountID = postingDto.CreateAccount.AccountID; } dbContext.WaterTransfer.Add(waterTransfer); dbContext.WaterTransferRegistration.Add(waterTransferRegistrationBuyer); dbContext.WaterTransferRegistration.Add(waterTransferRegistrationSeller); dbContext.SaveChanges(); dbContext.Entry(waterTransfer).Reload(); return(GetByWaterTransferID(dbContext, waterTransfer.WaterTransferID)); }
public static WaterTransferDto AsDto(this WaterTransfer waterTransfer) { var sellerRegistration = waterTransfer.GetWaterTransferRegistrationByWaterTransferType(WaterTransferTypeEnum.Selling); var buyerRegistration = waterTransfer.GetWaterTransferRegistrationByWaterTransferType(WaterTransferTypeEnum.Buying); return(new WaterTransferDto() { WaterTransferID = waterTransfer.WaterTransferID, OfferID = waterTransfer.OfferID, TransferDate = waterTransfer.TransferDate, TransferYear = waterTransfer.TransferDate.Year, AcreFeetTransferred = waterTransfer.AcreFeetTransferred, UnitPrice = waterTransfer.Offer?.Price, SellerRegistration = sellerRegistration.AsSimpleDto(), BuyerRegistration = buyerRegistration.AsSimpleDto(), Notes = waterTransfer.Notes, // ReSharper disable once PossibleNullReferenceException TradeNumber = waterTransfer.Offer.Trade.TradeNumber }); }
public static WaterTransferRegistration GetWaterTransferRegistrationByWaterTransferType(this WaterTransfer waterTransfer, WaterTransferTypeEnum waterTransferTypeEnum) { return(waterTransfer.WaterTransferRegistration.Single(x => x.WaterTransferTypeID == (int)waterTransferTypeEnum)); }