Ejemplo n.º 1
0
        public async Task <PackageCostQueryCommandResponse> HandlerAsync(PackageCostQueryCommand request)
        {
            await CommandBus.RaiseEventAsync(new PackageCostQueryEvent());

            var calculatedPackage = CalculatePackage(request);

            return(new PackageCostQueryCommandResponse
            {
                Cost = calculatedPackage.Cost,
                PackageType = calculatedPackage.PackageType
            });
        }
Ejemplo n.º 2
0
        private PackageCostQueryCommandResponse CalculatePackage(PackageCostQueryCommand costPackageRequest)
        {
            if (costPackageRequest.Length <= 200 &&
                costPackageRequest.Breadth <= 300 &&
                costPackageRequest.Height <= 150)
            {
                return new PackageCostQueryCommandResponse
                       {
                           PackageType = PackageType.Small,
                           Cost        = Package.SmallCost
                       }
            }
            ;

            if ((costPackageRequest.Length > 200 && costPackageRequest.Length <= 300) &&
                (costPackageRequest.Breadth > 300 && costPackageRequest.Breadth <= 400) &&
                (costPackageRequest.Height > 150 && costPackageRequest.Height <= 200))
            {
                return new PackageCostQueryCommandResponse
                       {
                           PackageType = PackageType.Medium,
                           Cost        = Package.MediumCost
                       }
            }
            ;
            if ((costPackageRequest.Length > 300 && costPackageRequest.Length <= 400) &&
                (costPackageRequest.Breadth > 400 && costPackageRequest.Breadth <= 600) &&
                (costPackageRequest.Height > 200 && costPackageRequest.Height <= 250))
            {
                return new PackageCostQueryCommandResponse
                       {
                           PackageType = PackageType.Large,
                           Cost        = Package.LargeCost
                       }
            }
            ;

            return(new PackageCostQueryCommandResponse
            {
                PackageType = PackageType.Undefined,
                Cost = 0
            });
        }
    }
}