Skip to content

Commit

Permalink
Merge pull request #3995 from cisagov/release/12.2.4.0
Browse files Browse the repository at this point in the history
Release/12.2.4.0
  • Loading branch information
mattrwins authored Jul 25, 2024
2 parents 3fa091b + 9c0a4d7 commit 8436ac7
Show file tree
Hide file tree
Showing 102 changed files with 5,026 additions and 817 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1028,11 +1028,21 @@ join f in _context.FINDING on a.Answer_Id equals f.Answer_Id
var answerFindingPair = results.Select(x => new { x.a, x.f }).Distinct();

List<FINDING> observationList = new List<FINDING>();

foreach (var pair in answerFindingPair)
{
observationList.Add(pair.f);
}

foreach (var obs in observationList)
{
var findingContact = _context.FINDING_CONTACT.Where(x => x.Finding_Id == obs.Finding_Id).ToList();
if (findingContact != null)
{
obs.FINDING_CONTACT = findingContact;
}
}

observationsPerAssessment.Add(new MergeObservation(assessId, observationList));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,50 @@ public List<ContactDetail> GetContacts(int assessmentId)

}

/// <summary>
/// Returns a list of ContactDetail instances for the assessments specified
/// </summary>
/// <returns></returns>
public List<ContactDetail> GetContactsByAssessmentId(int id1, int id2, int id3 = 0, int id4 = 0, int id5 = 0, int id6 = 0, int id7 = 0, int id8 = 0, int id9 = 0, int id10 = 0)
{
List<ContactDetail> list = new List<ContactDetail>();

var query = (from cc in _context.ASSESSMENT_CONTACTS
where cc.Assessment_Id == id1 || cc.Assessment_Id == id2 || cc.Assessment_Id == id3 ||
cc.Assessment_Id == id4 || cc.Assessment_Id == id5 || cc.Assessment_Id == id6 ||
cc.Assessment_Id == id5 || cc.Assessment_Id == id6 || cc.Assessment_Id == id7 ||
cc.Assessment_Id == id8 || cc.Assessment_Id == id9 || cc.Assessment_Id == id10
select new { cc });

foreach (var q in query.ToList())
{
ContactDetail c = new ContactDetail
{
FirstName = q.cc.FirstName,
LastName = q.cc.LastName,
PrimaryEmail = q.cc.PrimaryEmail,
AssessmentId = q.cc.Assessment_Id,
AssessmentRoleId = q.cc.AssessmentRoleId,
Invited = q.cc.Invited,
UserId = q.cc.UserId ?? null,
AssessmentContactId = q.cc.Assessment_Contact_Id,
Title = q.cc.Title,
Phone = q.cc.Phone,
CellPhone = q.cc.Cell_Phone,
ReportsTo = q.cc.Reports_To,
OrganizationName = q.cc.Organization_Name,
SiteName = q.cc.Site_Name,
EmergencyCommunicationsProtocol = q.cc.Emergency_Communications_Protocol,
IsSiteParticipant = q.cc.Is_Site_Participant,
IsPrimaryPoc = q.cc.Is_Primary_POC,
};

list.Add(c);
}

return list;

}

/// <summary>
/// Returns a list of contacts that meet the specified search criteria.
Expand Down Expand Up @@ -218,15 +262,23 @@ public ContactDetail AddContactToAssessment(int assessmentId, int userId, int ro
/// Creates a new Contact if needed. If a Contact already exists for the email, no
/// changes are made to the Contact row.
/// </summary>
public ContactDetail CreateAndAddContactToAssessment(ContactCreateParameters newContact)
public ContactDetail CreateAndAddContactToAssessment(ContactCreateParameters newContact, bool isMerge)
{
int assessmentId = _tokenManager.AssessmentForUser();
string appName = _tokenManager.Payload(Constants.Constants.Token_Scope);

ASSESSMENT_CONTACTS existingContact = null;

// See if the Contact already exists
existingContact = _context.ASSESSMENT_CONTACTS.FirstOrDefault(x => x.UserId == newContact.UserId && x.Assessment_Id == assessmentId);
if (!isMerge)
{
// See if the Contact already exists
existingContact = _context.ASSESSMENT_CONTACTS.FirstOrDefault(x => x.UserId == newContact.UserId && x.Assessment_Id == assessmentId);
} else
{
// If this is a merge, we need to check for existing contacts via different values
existingContact = _context.ASSESSMENT_CONTACTS.FirstOrDefault(x => x.Assessment_Id == newContact.AssessmentId && x.PrimaryEmail == newContact.PrimaryEmail && x.FirstName == newContact.FirstName);
}

if (existingContact == null)
{
// Create Contact
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
using System;
using LogicExtensions;
using CSETWebCore.Model.Question;
using CSETWebCore.Business.Reports;
using CSETWebCore.Model.Maturity;

namespace CSETWebCore.Business.Document
{
Expand Down Expand Up @@ -346,5 +348,6 @@ public void CopyFilesForMerge(List<DocumentWithAnswerId> documents)
_context.SaveChanges();

}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -152,10 +152,42 @@ public void DeleteObservation(Observation observation)
/// Updates an Observation in its FINDING database record
/// </summary>
/// <param name="observation"></param>
public int UpdateObservation(Observation observation)
public int UpdateObservation(Observation observation, bool merge)
{
ObservationData fm = new ObservationData(observation, _context);
int id = fm.Save();

if (merge == true)
{
var contactList = new List<FINDING_CONTACT>();
if (observation.Observation_Contacts != null)
{
foreach (var contact in observation.Observation_Contacts)
{
var previousContact = _context.FINDING_CONTACT.Where(x => x.Assessment_Contact_Id == contact.Assessment_Contact_Id).FirstOrDefault();
var userId = _context.ASSESSMENT_CONTACTS.Where(x => x.Assessment_Contact_Id == contact.Assessment_Contact_Id).Select(x => x.UserId).FirstOrDefault();
var newContactId = _context.ASSESSMENT_CONTACTS.Where(x => x.UserId == userId && x.Assessment_Id == _assessmentId).Select(x => x.Assessment_Contact_Id).FirstOrDefault();


FINDING_CONTACT newContact = new FINDING_CONTACT()
{
Finding_Id = id,
Assessment_Contact_Id = newContactId
};
contactList.Add(newContact);
}

_context.FINDING_CONTACT.AddRange(contactList);
_context.SaveChanges();

}

}
// IF MERGE
// IF fm._webObservation.ObservationContacts > 0 AND SELECT Finding_Contact (Where x.Finding_Id == id)
// _context.add(fm._webObservation.ObservationContact) <-- Maybe add a new function here inside the business and not manager? Idk.
// _context.save()
//
return id;
}

Expand Down
Loading

0 comments on commit 8436ac7

Please sign in to comment.