public async void ResourceAllocationAsync(VerifiedDisasterMessage request) { var copier = new ClassValueCopier(); VerifiedDisasterReport newReport = copier.ConvertAndCopy <VerifiedDisasterReport, VerifiedDisasterMessage>(request); newReport.AssignedOfficers = new List <string>(); // select the team count based on count int count = request.ScaleOfDisaster switch { "low" => 2, "Medium" => 4, "High" => 6, _ => 2, }; // Fetch the assigning officer details List <OfficerDetails> officersList = new List <OfficerDetails>(); officersList.AddRange((request.MedicalAssistanceRequired) ? await _officerDetailsCollection.GetOfficerDetails("Medical", count) : new List <OfficerDetails>()); officersList.AddRange((request.TrafficPoliceAssistanceRequired) ? await _officerDetailsCollection.GetOfficerDetails("Traffic", count) : new List <OfficerDetails>()); officersList.AddRange((request.FireBrigadeAssistanceRequired) ? await _officerDetailsCollection.GetOfficerDetails("FireBrigade", count) : new List <OfficerDetails>()); officersList.AddRange(await _officerDetailsCollection.GetOfficerDetails("Law", count)); foreach (OfficerDetails officer in officersList) { try { // add the assign newReport.AssignedOfficers.Add(officer.ReferenceCode); officer.IsOfficerAssigned = true; bool updateResult = await _officerDetailsCollection.UpdateAsync(officer); //send notification introducing a pipeline or direct } catch (NullReferenceException) { continue; } } bool result = await _verifiedDisasterReportCollection.AddAsync(newReport); }
public async Task <bool> UpdateDocumentAsync(object request = null) { VerifiedDisasterRequest request_ = (VerifiedDisasterRequest)request; ReportedDisaster oldDisaster = await _disasterCollection.GetAsync(request_.ReferenceCode); var copier = new ClassValueCopier(); ReportedDisaster newDisaster = copier.ConvertAndCopy(request_, oldDisaster); newDisaster.LastUpdatedBy = request_.VerifiedBy; newDisaster.IsClosed = false; bool result = await _disasterCollection.UpdateAsync(newDisaster); if (result && newDisaster.IsInfoTrue) { VerifiedDisasterMessage verifiedDisaster = copier.ConvertAndCopy <VerifiedDisasterMessage, ReportedDisaster>(newDisaster); string data = JsonConvert.SerializeObject(verifiedDisaster); await Mqtt.MqttPublish("RSCD/Message/Disaster/Verified", data); } return(result); }