public async Task Upload3GBMaterialsAsync(int testID) { var materials = await _threeGBRepository.Get3GBMaterialsAsync(testID); if (!materials.Any()) { throw new BusinessException("No materials added to this Slot. Please add materials to upload."); } var model = materials.GroupBy(g => g.PlantID) .Select(o => { var item = o.FirstOrDefault(); return(new { item.BreEZysAdministrationCode, item.ThreeGBTaskID, item.PlantNumber, item.BreedingProject, item.PlantID, item.Generation, item.TwoGBPlatePlanID, item.TwoGBPlateNumber, item.TwoGBRow, item.TwoGBColumn, item.TwoGBWeek, TwoGBResults = o.Where(x => x.TwoGBPlatePlanID != null) .GroupBy(g => g.MarkerName) .Select(x => new { MarkerName = x.Key, x.LastOrDefault()?.Result }).ToList(), Purpose = "", /* TBD*/ Remark = "" /* TBD*/ }); }).ToList(); var(UserName, Password) = Credentials.GetCredentials(); using (var svc = new ThreeGBSoapClient { Url = BASE_SVC_URL, Credentials = new NetworkCredential(UserName, Password) }) { svc.Model = new { PlantLists = model }; var response = await svc.Upload3GBMaterialsAsync(); //update database with ThreeGBPlantID await _threeGBRepository.Update3GBMaterialsAsync(testID, response); } }
public async Task <IEnumerable <ThreeGBSlotData> > GetAvailableProjectsAsync(AvailableThreeGBProjectsRequestArgs requestArgs) { var(UserName, Password) = Credentials.GetCredentials(); using (var svc = new ThreeGBSoapClient { Url = BASE_SVC_URL, Credentials = new NetworkCredential(UserName, Password) }) { svc.Model = new { requestArgs.CropCode, requestArgs.BrStationCode, ThreeGBType = requestArgs.TestTypeCode }; var response = await svc.GetAvailable3GBProjectAsync(); //apply data filter if required. return(response); } }