public void GetCompatibleParts_PartNumberInTheDataList_FindCompatibleParts() { //Arrange string partNumber = "5772-MetaDATA"; PartCatalogue partCatalogue = new PartCatalogue(); //Act IEnumerable <PartSummary> compatibleParts = partCatalogue.GetCompatibleParts(partNumber); PartSummary compatiblePart = compatibleParts.First(x => x.PartNumber == partNumber); //Assert Assert.AreEqual(partNumber, compatiblePart.PartNumber); }
public void TestListPartsOk() { string uploadId = this.client.InitiateMultipartUpload(this.bucketName, "test").UploadId; List <string> eTags = new List <string>(); for (int i = 0; i < 10; ++i) { eTags.Add(this.client.UploadPart(new UploadPartRequest() { BucketName = this.bucketName, Key = "test", UploadId = uploadId, PartNumber = i + 1, PartSize = 1, InputStream = new MemoryStream(Encoding.Default.GetBytes(i.ToString())) }).ETag); } ListPartsResponse response = this.client.ListParts(this.bucketName, "test", uploadId); Assert.AreEqual(response.BucketName, this.bucketName); Assert.AreEqual(response.IsTruncated, false); Assert.AreEqual(response.Key, "test"); Assert.AreEqual(response.MaxParts, 1000); Assert.AreEqual(response.NextPartNumberMarker, 10); Assert.AreEqual(response.Owner.Id, this.owner.Id); Assert.AreEqual(response.PartNumberMarker, 0); Assert.AreEqual(response.UploadId, uploadId); Assert.AreEqual(BosConstants.StorageClass.Standard, response.StorageClass); List <PartSummary> parts = response.Parts; Assert.AreEqual(parts.Count, 10); for (int i = 0; i < 10; ++i) { PartSummary part = parts[i]; Assert.AreEqual(part.ETag, eTags[i]); Assert.AreEqual(part.PartNumber, i + 1); Assert.AreEqual(part.Size, 1); Assert.IsTrue(Math.Abs(part.LastModified.Subtract(DateTime.UtcNow).TotalSeconds) < 60); } }
public void TestOrdinary() { String uploadId = this.client.InitiateMultipartUpload(this.bucketName, "test").UploadId; UploadPartResponse response = this.client.UploadPart(new UploadPartRequest() { BucketName = this.bucketName, Key = "test", UploadId = uploadId, PartNumber = 1, PartSize = 4, InputStream = new MemoryStream(Encoding.Default.GetBytes("data")) }); Assert.AreEqual(response.PartNumber, 1); Assert.IsNotNull(response.ETag); List <PartSummary> parts = this.client.ListParts(this.bucketName, "test", uploadId).Parts; Assert.AreEqual(parts.Count, 1); PartSummary part = parts[0]; Assert.IsNotNull(part); Assert.AreEqual(part.ETag, response.ETag); Assert.AreEqual(part.Size, 4L); }
public async Task <MonthlyReportOutput> Execute(MonthlyReportInput input) { var dStart = new DateTime(input.StartDate.Year, input.StartDate.Month, input.StartDate.Day, 0, 0, 0, DateTimeKind.Local); var dStop = new DateTime(input.StopDate.Year, input.StopDate.Month, input.StopDate.Day, 23, 59, 59, DateTimeKind.Local); IEnumerable <PartInstance> partInstances = new List <PartInstance>(); switch (input.CollectType) { case CollectType.OnlyCostReported: partInstances = await this._partInstanceProvider.GetEntityListAsync(instance => instance.CostReported || (instance.IsBubbler && instance.DateInstalled >= dStart && instance.DateInstalled <= dStop && instance.Transactions.Where(e => e.InventoryAction == InventoryAction.RETURNING).Count() == 0)); break; case CollectType.AllItems: partInstances = await this._partInstanceProvider.GetEntityListAsync(); break; case CollectType.OnlyCostNotReported: partInstances = await this._partInstanceProvider.GetEntityListAsync(instance => !instance.CostReported); break; } var monthlyReport = new List <PartSummary>(); StringBuilder transactionBuffer = new StringBuilder(); foreach (var partInstance in partInstances) { DateTime dateIn; var temp = partInstance.Transactions.OrderByDescending(e => e.TimeStamp).FirstOrDefault(e => e.InventoryAction == InventoryAction.INCOMING); dateIn = (temp != null) ? temp.TimeStamp : DateTime.Now; var today = DateTime.Now; var incomingTransactions = from transaction in partInstance.Transactions where (transaction.TimeStamp >= dStart && transaction.InventoryAction == InventoryAction.INCOMING) select transaction; var outgoingTransactions = from transaction in partInstance.Transactions where (transaction.TimeStamp >= dStart && transaction.InventoryAction == InventoryAction.OUTGOING) select transaction; var returningTransactions = from transaction in partInstance.Transactions where (transaction.TimeStamp >= dStart && transaction.InventoryAction == InventoryAction.RETURNING) select transaction; double incomingQtyTotal, incomingQtyRange, outgoingQtyTotal, outgoingQtyRange, currentQty; double incomingCostTotal, incomingCostRange, outgoingCostTotal, outgoingCostRange, currentCost; if (partInstance.IsBubbler) { incomingQtyTotal = incomingTransactions.Sum(e => e.MeasuredWeight); incomingQtyTotal = incomingTransactions.Sum(e => e.MeasuredWeight); incomingCostTotal = incomingTransactions.Sum(e => e.TotalCost); //incomingCostTotal = incomingTransactions.Sum(e => e.MeasuredWeight * e.UnitCost); incomingQtyRange = incomingTransactions.Where(e => e.TimeStamp <= dStop).Sum(e => e.MeasuredWeight); incomingCostRange = incomingTransactions.Where(e => e.TimeStamp <= dStop).Sum(e => e.TotalCost); //incomingCostRange = incomingTransactions.Where(e => e.TimeStamp <= dStop).Sum(e => e.MeasuredWeight * e.UnitCost); outgoingQtyTotal = outgoingTransactions.Sum(e => e.MeasuredWeight); outgoingCostTotal = outgoingTransactions.Sum(e => e.TotalCost); //outgoingCostTotal = outgoingTransactions.Sum(e => e.MeasuredWeight * e.UnitCost); outgoingQtyRange = outgoingTransactions.Where(e => e.TimeStamp <= dStop).Sum(e => e.MeasuredWeight); outgoingCostRange = outgoingTransactions.Where(e => e.TimeStamp <= dStop).Sum(e => e.MeasuredWeight * e.UnitCost); currentQty = partInstance.BubblerParameter.Measured * partInstance.Quantity; currentCost = partInstance.UnitCost * currentQty; //incomingQtyTotal = incomingTransactions.Sum(e => e.PartInstance.BubblerParameter.Measured); ////incomingCostTotal = incomingTransactions.Sum(e => e.TotalCost); //incomingCostTotal = incomingTransactions.Sum(e => e.PartInstance.BubblerParameter.Measured * e.UnitCost); //incomingQtyRange = incomingTransactions.Where(e => e.TimeStamp <= dStop).Sum(e => e.PartInstance.BubblerParameter.Measured); ////incomingCostRange = incomingTransactions.Where(e => e.TimeStamp <= dStop).Sum(e => e.TotalCost); //incomingCostRange = incomingTransactions.Where(e => e.TimeStamp <= dStop).Sum(e => e.PartInstance.BubblerParameter.Measured * e.UnitCost); //outgoingQtyTotal = outgoingTransactions.Sum(e => e.PartInstance.BubblerParameter.Measured); ////outgoingCostTotal = outgoingTransactions.Sum(e => e.TotalCost); //outgoingCostTotal = outgoingTransactions.Sum(e => e.PartInstance.BubblerParameter.Measured * e.UnitCost); //outgoingQtyRange = outgoingTransactions.Where(e => e.TimeStamp <= dStop).Sum(e => e.PartInstance.BubblerParameter.Measured); //outgoingCostRange = outgoingTransactions.Where(e => e.TimeStamp <= dStop).Sum(e => e.PartInstance.BubblerParameter.Measured * e.UnitCost); //currentQty = partInstance.BubblerParameter.Measured; //currentCost = partInstance.UnitCost*currentQty; } else { incomingQtyTotal = incomingTransactions.Sum(e => e.Quantity); incomingCostTotal = incomingTransactions.Sum(e => e.TotalCost); incomingQtyRange = incomingTransactions.Where(e => e.TimeStamp <= dStop).Sum(e => e.Quantity); incomingCostRange = incomingTransactions.Where(e => e.TimeStamp <= dStop).Sum(e => e.TotalCost); outgoingQtyTotal = outgoingTransactions.Sum(e => e.Quantity); outgoingCostTotal = outgoingTransactions.Sum(e => e.TotalCost); outgoingQtyRange = outgoingTransactions.Where(e => e.TimeStamp <= dStop).Sum(e => e.Quantity); outgoingCostRange = outgoingTransactions.Where(e => e.TimeStamp <= dStop).Sum(e => e.TotalCost); currentQty = partInstance.Quantity; currentCost = partInstance.UnitCost * currentQty; } double outgoingCost = outgoingCostRange; double outgoingQty = outgoingQtyRange; PartSummary partSummary = new PartSummary(); partSummary.PartName = partInstance.Part.Name; partSummary.InstanceName = partInstance.Name; partSummary.SerialNumber = partInstance.SerialNumber; partSummary.BatchNumber = partInstance.BatchNumber; partSummary.DateIn = dateIn; partSummary.Age = (today - partSummary.DateIn).Days; partSummary.Today = today; partSummary.StartQuantity = (currentQty - incomingQtyTotal) + outgoingQtyTotal; partSummary.StartCost = (currentCost - incomingCostTotal) + outgoingCostTotal; partSummary.EndQuantity = (partSummary.StartQuantity + incomingQtyRange) - outgoingQtyRange; partSummary.EndCost = (partSummary.StartCost + incomingCostRange) - outgoingCostRange; partSummary.IncomingCost = incomingCostRange; partSummary.IncomingQuantity = incomingQtyRange; partSummary.RndOutgoingCost = outgoingCost * MonthlySummaryUseCase.RnDFactor; partSummary.RndOutgoingQuantity = outgoingQty * MonthlySummaryUseCase.RnDFactor; partSummary.ProductionOutgoingCost = outgoingCost * MonthlySummaryUseCase.ProductionFactor; partSummary.ProductionOutgoingQuantity = outgoingQty * MonthlySummaryUseCase.ProductionFactor; partSummary.TotalOutgoingCost = outgoingCostRange; partSummary.TotalOutgoingQuantity = outgoingQtyRange; partSummary.CurrentCost = currentCost; partSummary.CurrentQuantity = currentQty; monthlyReport.Add(partSummary); } return(new MonthlyReportOutput(monthlyReport, true, "Done")); }