public IActionResult Create([FromBody] WhatsInTheBagTo value) { if (value == null) { return(BadRequest("Data model could not be null")); } var cdmItem = new WhatsInTheBag(); cdmItem.ClubShaftFlexId = value.ClubShaftFlexId; cdmItem.ClubLoftId = value.ClubLoftId; cdmItem.FaceLieAdjustmentId = value.FaceLieAdjustmentId; cdmItem.FaceLoftAdjustmentId = value.FaceLoftAdjustmentId; cdmItem.Created = DateTime.UtcNow; cdmItem.ClubCategoryId = value.CategoryId; cdmItem.BrandId = value.BrandId; cdmItem.ClubCategoryTypeId = value.ClubCategoryTypeId; cdmItem.ModelId = value.ModelId; cdmItem.PlanToPurchase = value.PlanningToPurchase; cdmItem.ClubShaftLengthId = value.ClubShaftLengthId; cdmItem.Sku = value.Sku; var consumer = _repository.Query <Consumer>().Include(y => y.GolferProfile) .FirstOrDefault(y => y.Id == value.ConsumerId); if (consumer == null) { return(BadRequest("Consumer not found.")); } if (consumer.GolferProfile == null) { var profile = new GolferProfile(); profile.Created = DateTime.UtcNow; profile.ConsumerId = consumer.Id.Value; _repository.Save(profile); cdmItem.GolferProfileId = profile.Id; } else { cdmItem.GolferProfileId = consumer.GolferProfile.Id; } _repository.Save(cdmItem); return(Ok(_repository.Query <WhatsInTheBag>().Include(x => x.ClubShaftLength) .Include(x => x.ClubShaftFlex) .Include(x => x.ClubCategoryType) .Include(x => x.FaceLoftAdjustment) .Include(x => x.FaceLieAdjustment) .Include(x => x.ClubLoft) .Include(x => x.ClubCategory) .Include(x => x.Brand) .Include(x => x.Model).FirstOrDefault(x => x.Id == cdmItem.Id))); }
public void Migrate() { try { _logger.LogInformation("################# Migration of Consumers"); _sugarDataContext.Database.SetCommandTimeout(600); var idsOld = _repository.Query <MfeUserIds>().Select(x => x.Id).ToList(); var consumersFromSugar = _sugarDataContext.Query <CConsumers>().OrderByDescending(x => x.DateModified) .Where(x => idsOld.Contains(x.Id)).AsNoTracking().ToList(); var sugarGolferProfileAll = _sugarDataContext.Query <CConsumersCstm>() .Where(x => idsOld.Contains(x.IdC)).AsNoTracking().ToList(); var countFromSugar = consumersFromSugar.Count(); var loopCount = countFromSugar / _splitCount; _logger.LogInformation("#################Starting Migration of Consumers"); _logger.LogInformation($"Found {countFromSugar} to migrate"); var systemId = getSystemId(); var regionId = _repository.Query <Region>().FirstOrDefault(y => y.Code == "USA").Id.Value; for (var x = 0; x < loopCount; x++) { var skip = _startCount + (x * _splitCount); if (skip > countFromSugar) { break; } _logger.LogInformation($"Starting segment starting at {skip}"); _repository.ReloadContext(); _repository.GetDatabase().ChangeTracker.AutoDetectChangesEnabled = false; var sugarItems = consumersFromSugar.Skip(skip).Take(_splitCount).ToList(); foreach (var sItem in sugarItems) { if (string.IsNullOrWhiteSpace(sItem.Email)) { continue; } var exists = _repository.Query <ConsumerData.Models.Consumer>().Any(y => y.PrimaryEmail.ToLower().Trim() == sItem.Email.ToLower().Trim()); if (exists) { continue; } emailsSaved.Add(sItem.Email); var cdmItem = new ConsumerData.Models.Consumer(); cdmItem.FirstName = sItem.Fname; cdmItem.LastName = sItem.Lname; cdmItem.PrimaryEmail = sItem.Email; cdmItem.Created = sItem.DateEntered ?? DateTime.UtcNow; cdmItem.Modified = sItem.DateModified ?? DateTime.UtcNow; cdmItem.Dob = sItem.Dob; cdmItem.Gender = sItem.Gender; try { var consumerProfile = new ConsumerProfile { RegionId = regionId, PhoneHome = sItem.Phonehm, PhoneCell = sItem.Phonemb, Notes = sItem.Description, Created = sItem.DateEntered ?? DateTime.UtcNow }; if (sItem.AddressPostalcode != null) { consumerProfile.Address = new Address { Created = sItem.DateEntered ?? DateTime.UtcNow, AddressLine1 = sItem.AddressStreet, City = sItem.AddressCity, State = sItem.AddressState, Country = sItem.AddressCountry ?? "USA", ZipCode = sItem.AddressPostalcode, SystemId = systemId }; } if (consumerProfile.SystemToConsumerProfiles == null) { consumerProfile.SystemToConsumerProfiles = new List <SystemToConsumerProfile>(); } if (consumerProfile.SystemToConsumerProfiles.All(y => y.SystemId != systemId)) { consumerProfile.SystemToConsumerProfiles.Add(new SystemToConsumerProfile() { SystemId = systemId, Created = DateTime.UtcNow }); } consumerProfile.ConsumerExperiences = new List <ConsumerExperience>(); cdmItem.ConsumerProfiles = new List <ConsumerProfile>() { consumerProfile }; } catch (Exception e) { _logger.LogError($"broke in comsumer profile create "); if (e.Message != null) { _logger.LogError(e.Message); } _logger.LogError(e.StackTrace); if (e.InnerException != null && e.InnerException.Message != null) { _logger.LogError(e.InnerException.Message); } } try { var sugarGolferProfile = sugarGolferProfileAll.FirstOrDefault(y => y.IdC == sItem.Id); if (sugarGolferProfile != null) { var golferProfile = new GolferProfile(); if (!string.IsNullOrEmpty(sugarGolferProfile.HandicapC)) { int handicap = 0; var wasNumber = int.TryParse(sugarGolferProfile.HandicapC, out handicap); if (wasNumber) { golferProfile.Handicap = handicap; } } if (!string.IsNullOrEmpty(sugarGolferProfile.DriverLoftC)) { golferProfile.DriverLoftId = _staticTableHelper.GetLoftId(sugarGolferProfile.DriverLoftC); } if (!string.IsNullOrEmpty(sugarGolferProfile.DriverShaftFlexC)) { golferProfile.CurrentDriverFlexId = _staticTableHelper.GetFlexId(sugarGolferProfile.DriverShaftFlexC); } golferProfile.CurrentDriverBallFlight = sugarGolferProfile.CurrentDriverBallFlightC; golferProfile.DesiredDriverBallFlight = sugarGolferProfile.DesiredDriverBallFlightC; golferProfile.TypicalDriverDistance = sugarGolferProfile.TypicalDriverDistanceC; if (!string.IsNullOrEmpty(sugarGolferProfile.IronLengthC)) { golferProfile.CurrentIronLengthId = _staticTableHelper.GetChaftLengthId(sugarGolferProfile.IronLengthC); } golferProfile.Current7IronBallFlight = sugarGolferProfile.CurrentIronBallFlightC; if (!string.IsNullOrEmpty(sugarGolferProfile.IronLieC)) { golferProfile.CurrentIronLieId = _staticTableHelper.GetLieId(sugarGolferProfile.IronLieC); } golferProfile.Desired7IronBallFlight = sugarGolferProfile.DesiredIronBallFlightC; golferProfile.Typical7IronDistance = sugarGolferProfile.TypicalIronDistanceC; golferProfile.Created = DateTime.UtcNow; int rpms = 0; int.TryParse(sItem.Rpm, out rpms); golferProfile.RoundsPerMonth = rpms; if (!string.IsNullOrEmpty(sItem.Dexterity)) { golferProfile.ClubHandId = _staticTableHelper.GetClubHandId(sItem.Dexterity); } cdmItem.GolferProfile = golferProfile; } } catch (Exception e) { _logger.LogError($"broke on golfer profile create "); if (e.Message != null) { _logger.LogError(e.Message); } _logger.LogError(e.StackTrace); if (e.InnerException != null && e.InnerException.Message != null) { _logger.LogError(e.InnerException.Message); } } try { _repository.SaveQueue(cdmItem); } catch (Exception e) { _logger.LogError($"failed to save "); if (e.Message != null) { _logger.LogError(e.Message); } _logger.LogError(e.StackTrace); if (e.InnerException != null && e.InnerException.Message != null) { _logger.LogError(e.InnerException.Message); } } } _logger.LogError($"Saving Consumers "); try { _repository.Save(); } catch (Exception e) { _logger.LogError($"failed to save "); if (e.Message != null) { _logger.LogError(e.Message); } _logger.LogError(e.StackTrace); if (e.InnerException != null && e.InnerException.Message != null) { _logger.LogError(e.InnerException.Message); } } _logger.LogError($"Saving Consumer"); } } catch (Exception e) { _logger.LogError("failed", e); if (e.Message != null) { _logger.LogError(e.Message); } _logger.LogError(e.StackTrace); if (e.InnerException != null && e.InnerException.Message != null) { _logger.LogError(e.StackTrace); } } }
private static void CreateOrUpdateGolfProfile(ConsumerTo consumerModel, GolferProfile golferProfile, Consumer consumer) { if (consumerModel.Handicap != null) { golferProfile.Handicap = consumerModel.Handicap; } if (consumerModel.DriverLoftId != null) { golferProfile.DriverLoftId = consumerModel.DriverLoftId; } if (consumerModel.CurrentDriverFlexId != null) { golferProfile.CurrentDriverFlexId = consumerModel.CurrentDriverFlexId; } if (consumerModel.CurrentDriverBallFlight != null) { golferProfile.CurrentDriverBallFlight = consumerModel.CurrentDriverBallFlight; } if (consumerModel.DesiredDriverBallFlight != null) { golferProfile.DesiredDriverBallFlight = consumerModel.DesiredDriverBallFlight; } if (consumerModel.TypicalDriverDistance != null) { golferProfile.TypicalDriverDistance = consumerModel.TypicalDriverDistance; } if (consumerModel.CurrentIronLengthId != null) { golferProfile.CurrentIronLengthId = consumerModel.CurrentIronLengthId; } if (consumerModel.Current7IronBallFlight != null) { golferProfile.Current7IronBallFlight = consumerModel.Current7IronBallFlight; } if (consumerModel.CurrentIronLieId != null) { golferProfile.CurrentIronLieId = consumerModel.CurrentIronLieId; } if (consumerModel.Desired7IronBallFlight != null) { golferProfile.Desired7IronBallFlight = consumerModel.Desired7IronBallFlight; } if (consumerModel.Typical7IronDistance != null) { golferProfile.Typical7IronDistance = consumerModel.Typical7IronDistance; } if (consumerModel.DesiredDriverFlexId != null) { golferProfile.DesiredDriverFlexId = consumerModel.DesiredDriverFlexId; } if (consumerModel.Rpm != null) { golferProfile.RoundsPerMonth = consumerModel.Rpm.Value; } if (consumerModel.ClubHandId != null) { golferProfile.ClubHandId = consumerModel.ClubHandId; } if (!golferProfile.Id.HasValue) { consumer.GolferProfile = golferProfile; } }