public WarehousePart(AddWarehousePartBindingModel model) { PartNumber = model.PartNumber; Availability = model.Availability; Brand = model.Brand; Description = model.Description; Model = model.Model; Price = model.Price; SubstituteParts = model.SubstituteParts; Invoice = model.Invoice; InvoiceDate = model.InvoiceDate.ToUniversalTime(); ReceivedDate = DateTime.UtcNow.ToUniversalTime(); }
public async void AddWarehousePart( AddWarehousePartBindingModel model, string serviceName) { FirestoreDb db = connection.GetFirestoreDb(); CollectionReference colRef = db .Collection("warehouse-parts") .Document("bcyvKBFBWE6DxnvIQ1Kn") .Collection("parts"); WarehousePart newPart = new WarehousePart(model); QuerySnapshot partsWithSamePN = await colRef .WhereEqualTo("PartNumber", newPart.PartNumber) .GetSnapshotAsync(); if (partsWithSamePN.Count == 0) { QuerySnapshot partsWithSameSPN = await colRef .WhereArrayContains( "SubstituteParts", newPart.PartNumber) .GetSnapshotAsync(); if (partsWithSameSPN.Count == 0) { await RunTransaction(newPart, colRef); } else { WarehousePart lastPartWithSameSPN = GetLastPartWithSamePnOrSpn(partsWithSameSPN); newPart.Model = GetUniqueElements( newPart.Model, lastPartWithSameSPN.Model); newPart.SubstituteParts = GetUniqueElements( newPart.SubstituteParts, lastPartWithSameSPN.SubstituteParts); partsWithSameSPN.Documents .ToList() .ForEach(async x => { WarehousePart p = x.ConvertTo <WarehousePart>(); p.Model = newPart.Model; p.SubstituteParts = newPart.SubstituteParts; Dictionary <string, object> partAsDictionary = ConvertPartToDictionary(p); await db.RunTransactionAsync(async t => { await x.Reference .UpdateAsync(partAsDictionary); }); }); } } else { WarehousePart lastPartWithSamePN = GetLastPartWithSamePnOrSpn(partsWithSamePN); newPart.Model = GetUniqueElements( newPart.Model, lastPartWithSamePN.Model); newPart.SubstituteParts = GetUniqueElements( newPart.SubstituteParts, lastPartWithSamePN.SubstituteParts); partsWithSamePN.Documents .ToList() .ForEach(async x => { WarehousePart p = x.ConvertTo <WarehousePart>(); p.Model = newPart.Model; p.SubstituteParts = newPart.SubstituteParts; p.Availability = partsWithSamePN.Count + 1; Dictionary <string, object> partAsDictionary = ConvertPartToDictionary(p); await db.RunTransactionAsync(async t => { await x.Reference .UpdateAsync(partAsDictionary); }); }); } }
public void AddPart( [FromBody] AddWarehousePartBindingModel newPart, string serviceName) { service.AddWarehousePart(newPart, serviceName); }