private List <ScheduledQuantityLocationContractNomination> ReMap(Nomination.Domain.ScheduledQuantities.Naesb.NaesbScheduledQuantities obj) { //will modify by reference AddNomsContractInfo(obj); ////////////////////////////////////////////// //TODO: This works but i dont understand why...try to fix it List <ScheduledQuantityLocationContractNomination> lcns = ( from nomination in obj.Nominations from nominationDetail in nomination.Location.NominationDetails from identifier in nominationDetail.Identifiers where identifier.EntityIdCode == "78" from identifierDetail in identifier.IdentifierDetails where identifierDetail.Qualifier == "KSR" group nominationDetail by new { LocationCode = nomination.Location.Code, ServiceRequesterContractId = identifierDetail.Code } into grp orderby grp.Key.LocationCode select new ScheduledQuantityLocationContractNomination { LocationCode = grp.Key.LocationCode, ContractNominations = new List <ScheduledQuantityContractNomination> { new ScheduledQuantityContractNomination { ServiceRequesterContractId = grp.Key.ServiceRequesterContractId, Nominations = grp.ToList() } } } ).ToList(); List <ScheduledQuantityLocationContractNomination> objs = ( from locationContractNominations in lcns from contractNominations in locationContractNominations.ContractNominations group contractNominations by new { LocationCode = locationContractNominations.LocationCode, } into grp select new ScheduledQuantityLocationContractNomination { LocationCode = grp.Key.LocationCode, ContractNominations = grp.ToList() } ).ToList(); return(objs); }
private DateTime GasDay(Nomination.Domain.ScheduledQuantities.Naesb.NaesbScheduledQuantities obj) { //GasDay = obj.Nominations[0].DateTimeFormatQualifier == "RDT" ? DateTime.ParseExact(obj.Nominations[0].DateTimePeriod?.Split('-')[0].Substring(0, 8), "yyyyMMdd", null) : default(DateTime), if (obj.Nominations[0].DateTimeFormatQualifier == "RDT") { return(DateTime.ParseExact(obj.Nominations[0].DateTimePeriod?.Split('-')[0].Substring(0, 8), "yyyyMMdd", null)); } if (obj.Nominations[0].DateTimeFormatQualifier == "RD8") { return(DateTime.ParseExact(obj.Nominations[0].DateTimePeriod?.Split('-')[0].Substring(0, 8), "yyyyMMdd", null)); } return(default(DateTime));; }
private string GasDayEnd(Nomination.Domain.ScheduledQuantities.Naesb.NaesbScheduledQuantities obj) { //GasDayEnd = obj.Nominations[0].DateTimeFormatQualifier == "RDT" ? obj.Nominations[0].DateTimePeriod?.Split('-')[1] : null, if (obj.Nominations[0].DateTimeFormatQualifier == "RDT") { return(obj.Nominations[0].DateTimePeriod?.Split('-')[1]); } if (obj.Nominations[0].DateTimeFormatQualifier == "RD8") { return(obj.Nominations[0].DateTimePeriod?.Split('-')[1] + "0900"); } return(null); }
//this function will add NomsContractInfo nodes when null...by reference private void AddNomsContractInfo(Nomination.Domain.ScheduledQuantities.Naesb.NaesbScheduledQuantities obj) { foreach (var nom in obj.Nominations) { foreach (var detail in nom.Location.NominationDetails) { foreach (var indentifier in detail.Identifiers) { if (indentifier.EntityIdCode == "78") { if (indentifier.IdentifierDetails != null) { //identifier of KSR does not exist bool exists = indentifier.IdentifierDetails.Any(x => x.Qualifier == "KSR"); if (exists == false) { indentifier.IdentifierDetails.Add( new Nomination.Domain.ScheduledQuantities.Naesb.IdentifierDetail { Qualifier = "KSR", Code = null } ); } } else { //add the entire list with one KSR indentifier.IdentifierDetails = new List <Nomination.Domain.ScheduledQuantities.Naesb.IdentifierDetail> { new Nomination.Domain.ScheduledQuantities.Naesb.IdentifierDetail { Qualifier = "KSR", Code = null } }; } } } } } }
/////////////////////////////////////////////////// /// ScheduledQuantities /////////////////////////////////////////////////// public Nomination.Domain.ScheduledQuantities.ScheduledQuantities Map(Nomination.Domain.ScheduledQuantities.Naesb.NaesbScheduledQuantities obj) { if (obj != null) { List <ScheduledQuantityLocationContractNomination> locationContractNominations = ReMap(obj); Nomination.Domain.ScheduledQuantities.ScheduledQuantities item = new Nomination.Domain.ScheduledQuantities.ScheduledQuantities { PurchaseOrderNumber = obj.Header.TransactionIdentifier, GasDayStart = GasDayStart(obj), GasDayEnd = GasDayEnd(obj), GasDay = GasDay(obj), Cycle = obj.Nominations[0].Cycle.Indicator, PartyIndentificaton = Map(obj.ConfirmingParties), Locations = locationContractNominations.Select(Map).ToList() }; return(item); } return(null); }