I have following code which gets MastrSegments from repository(entity framework). It's working but I think I am violating DRY (though not sure).
MastrSegments conatins collection of SegReqs and SegReq contains collection Routes. And I am looping through them to update RootObject
foreach (var MastrSegment in MastrSegments)
{
var segReqCount = MastrSegment.segReqs.Count();
var MastrSegmentRow = new Row
{
c = new RootObject[] { new RootObject { v = MastrSegment.Name }, new RootObject { v = "TopClient" }, new RootObject { v = segReqCount }, new RootObject { v = 12 } }
};
foreach (var segReq in MastrSegment.segReqs)
{
var routesCount = segReq.routess.Count;
Row segReqRow;
if (segReq.Name != MastrSegment.Name)
{
segReqRow = new Row
{
c = new RootObject[] { new RootObject { v = segReq.Name }, new RootObject { v = MastrSegment.Name }, new RootObject { v = routesCount }, new RootObject { v = -26 } }
};
}
else
{
throw new NotSupportedException("MastrSegment name and segReq name can not be same !!");
}
foreach (var routes in segReq.routess)
{
var circuitsCount = routes.Circuits.Count;
Row routesRow = null;
if (routes.Name != segReq.Name)
{
routesRow = new Row
{
c = new RootObject[] { new RootObject { v = routes.Name }, new RootObject { v = segReq.Name }, new RootObject { v = circuitsCount }, new RootObject { v = 16 } }
};
}
else
{
throw new NotSupportedException("segReq name and routes name can not be same !!");
}
rows.Add(routesRow);
}
rows.Add(segReqRow);
}
rows.Add(MastrSegmentRow);
}
var returnData = rows.ToArray();