public WasteType Map(CreateWasteType source) { WasteType wasteType; switch (source.ChemicalCompositionType) { case ChemicalComposition.RDF: wasteType = WasteType.CreateRdfWasteType(compositionContinuedMapper.Map(source.WasteCompositions)); break; case ChemicalComposition.SRF: wasteType = WasteType.CreateSrfWasteType(compositionContinuedMapper.Map(source.WasteCompositions)); break; case ChemicalComposition.Wood: wasteType = WasteType.CreateWoodWasteType(source.ChemicalCompositionDescription, compositionContinuedMapper.Map(source.WasteCompositions)); break; case ChemicalComposition.Other: wasteType = WasteType.CreateOtherWasteType(source.WasteCompositionName); break; default: throw new InvalidOperationException(string.Format("Unknown Chemical Composition Type: {0}", source)); } return(wasteType); }
public async Task <ActionResult> Parameters(ChemicalCompositionViewModel model, bool?backToOverview = null) { if (!ModelState.IsValid) { return(View(model)); } var existingWasteTypeData = await mediator.SendAsync(new GetWasteType(model.NotificationId)); var filteredWasteCompositions = RemoveNotApplicableValues(model.WasteComposition); var createNewWasteType = new CreateWasteType { NotificationId = model.NotificationId, ChemicalCompositionType = model.ChemicalCompositionType, WasteCompositions = filteredWasteCompositions }; await mediator.SendAsync(createNewWasteType); await mediator.SendAsync(new SetEnergy(model.Energy, model.NotificationId)); bool dataHasChanged = false; if (existingWasteTypeData != null) { dataHasChanged = CheckForChangesInFirstScreen(existingWasteTypeData, filteredWasteCompositions, model.Energy, model.ChemicalCompositionType); } if (existingWasteTypeData == null || dataHasChanged) { await this.auditService.AddAuditEntry(this.mediator, model.NotificationId, User.GetUserId(), dataHasChanged == false?NotificationAuditType.Added : NotificationAuditType.Updated, NotificationAuditScreenType.ChemicalComposition); } if (model.ChemicalCompositionType == ChemicalComposition.Wood) { await mediator.SendAsync(new SetWoodTypeDescription(model.Description, model.NotificationId)); } return(RedirectToAction("Constituents", new { id = model.NotificationId, chemicalCompositionType = model.ChemicalCompositionType, backToOverview })); }