private static void UpdateConsumer(ConsumerTo consumerModel, bool allowUpdateEmail, Consumer consumer) { if (consumerModel.FirstName != null) { consumer.FirstName = consumerModel.FirstName; } if (consumerModel.LastName != null) { consumer.LastName = consumerModel.LastName; } if (allowUpdateEmail && consumerModel.Email != null) { consumer.PrimaryEmail = consumerModel.Email; } if (consumerModel.Dob != null) { consumer.Dob = consumerModel.Dob; } if (consumerModel.Gender != null) { consumer.Gender = consumerModel.Gender; } if (consumerModel.GenderId != null) { consumer.GenderId = consumerModel.GenderId; } if (consumerModel.FirstNameKana != null) { consumer.FirstNameKana = consumerModel.FirstNameKana; } if (consumerModel.LastNameKana != null) { consumer.LastNameKana = consumerModel.LastNameKana; } }
public IActionResult CreateNew([FromBody] ConsumerTo consumerModel) { if (consumerModel.RegionId == null) { return(BadRequest(ValidationMessages.RegionIdRequired)); } if (consumerModel.ConsumerId != null) { return(BadRequest(ValidationMessages.ConsumerNoNeedToProvided)); } if (consumerModel.Email == null) { return(BadRequest(ValidationMessages.EmailRequired)); } if (!IsValidSystemId(consumerModel.SystemId)) { return(BadRequest(ValidationMessages.SystemIdRequired)); } if (!IsValidEmail(consumerModel.Email)) { return(BadRequest(ValidationMessages.InvalidEmailFormat)); } /* 04/29 TL check if consumer already exists with the provided email, return consumer already exists to force * client to use update or addUpdate endpoint * query database that provided email exists */ var existingConsumer = _repository.Query <Consumer>().AsNoTracking().FirstOrDefault(x => x.PrimaryEmail == consumerModel.Email); if (existingConsumer != null) { return(BadRequest(ValidationMessages.ConsumerAlreadyExists)); } /* Client must provide a zipcode then country string must be also provided */ if (consumerModel.Postalcode != null && string.IsNullOrEmpty(consumerModel.Country)) { return(BadRequest(ValidationMessages.CountryRequired)); } return(AddUpdate(consumerModel, true)); }
public IActionResult Create([FromBody] ConsumerTo consumerModel) { if (consumerModel.RegionId == null) { return(BadRequest(ValidationMessages.RegionIdRequired)); } if (!IsValidSystemId(consumerModel.SystemId)) { return(BadRequest(ValidationMessages.SystemIdRequired)); } //if we have the postal then the country must be provided if (consumerModel.Postalcode != null && string.IsNullOrEmpty(consumerModel.Country)) { return(BadRequest(ValidationMessages.CountryRequired)); } if (!IsValidEmail(consumerModel.Email)) { return(BadRequest(ValidationMessages.InvalidEmailFormat)); } return(AddUpdate(consumerModel, true)); }
public IActionResult Update([FromBody] ConsumerTo consumerModel) { if (consumerModel.ConsumerId == null) { return(BadRequest(ValidationMessages.ConsumerIdRequired)); } if (consumerModel.RegionId == null) { return(BadRequest(ValidationMessages.RegionIdRequired)); } if (!IsValidSystemId(consumerModel.SystemId)) { return(BadRequest(ValidationMessages.SystemIdRequired)); } if (!IsValidEmail(consumerModel.Email)) { return(BadRequest(ValidationMessages.InvalidEmailFormat)); } var oldConsumer = _repository.Query <Consumer>().AsNoTracking().FirstOrDefault(x => x.Id == consumerModel.ConsumerId); if (oldConsumer == null) { return(BadRequest(ValidationMessages.ConsumerNotFound)); } if (oldConsumer.PrimaryEmail.ToLower() != consumerModel.Email.ToLower()) { var user = _userClaimResolver.Resolve(); var canChangeEmail = user.Claims.FirstOrDefault(x => x.Type == "CanChangeEmail"); if (canChangeEmail == null || !Convert.ToBoolean(canChangeEmail.Value)) { return(BadRequest(ValidationMessages.ConsumerFoundButEmailIsNotMatch)); } } return(AddUpdate(consumerModel, true)); }
private static void CreateOrUpdateConsumerProfile(ConsumerTo consumerModel, ConsumerProfile consumerProfile, Consumer cdmItem) { Debug.Assert(consumerModel.RegionId != null, "consumerModel.RegionId != null"); consumerProfile.RegionId = consumerModel.RegionId.Value; if (consumerModel.PhoneHome != null) { consumerProfile.PhoneHome = consumerModel.PhoneHome; } if (consumerModel.PhoneCell != null) { consumerProfile.PhoneCell = consumerModel.PhoneCell; } if (consumerModel.Description != null) { consumerProfile.Notes = consumerModel.Description; } if (consumerModel.MemberRank != null) { consumerProfile.MemberRank = consumerModel.MemberRank; } if (consumerProfile.SystemToConsumerProfiles == null) { consumerProfile.SystemToConsumerProfiles = new List <SystemToConsumerProfile>(); } if (consumerProfile.SystemToConsumerProfiles.All(x => x.SystemId != consumerModel.SystemId)) { consumerProfile.SystemToConsumerProfiles.Add( new SystemToConsumerProfile { SystemId = consumerModel.SystemId, Created = DateTime.UtcNow }); } if (cdmItem.ConsumerProfiles == null) { cdmItem.ConsumerProfiles = new List <ConsumerProfile> { consumerProfile }; } else if (!consumerProfile.Id.HasValue) //when consumer profile id is NULL then add new profile { cdmItem.ConsumerProfiles.Add(consumerProfile); } if (consumerModel.Postalcode != null) { var address = consumerProfile.Address ?? new Address(); address.ZipCode = consumerModel.Postalcode; address.State = consumerModel.State; address.Country = consumerModel.Country; address.Created = DateTime.UtcNow; address.SystemId = consumerModel.SystemId; address.AddressLine1 = consumerModel.AddressLine1; address.AddressLine2 = consumerModel.AddressLine2; address.AddressLine3 = consumerModel.AddressLine3; address.City = consumerModel.City; if (!address.Id.HasValue) { consumerProfile.Address = address; } } }
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; } }
private static void CreateNewConsumerProfile(ConsumerTo consumerModel, Consumer consumer) { var consumerProfile = new ConsumerProfile(); CreateOrUpdateConsumerProfile(consumerModel, consumerProfile, consumer); }
public IActionResult AddUpdate(ConsumerTo consumerModel, bool allowUpdateEmail = false) { Consumer consumer = null; var cdmItemQ = _repository.Query <Consumer>(); if (consumerModel.ConsumerProfileId.HasValue) { consumer = cdmItemQ.FirstOrDefault(x => x.ConsumerProfiles.Any(y => y.Id == consumerModel.ConsumerProfileId)); } else if (consumerModel.ConsumerId.HasValue) { consumer = cdmItemQ.FirstOrDefault(x => x.Id == consumerModel.ConsumerId); } else if (consumerModel.Email != null) { consumer = cdmItemQ.FirstOrDefault(x => x.PrimaryEmail == consumerModel.Email); } if (consumer == null) // if not matched with any credential above then we need to create new consumer { if (consumerModel.Email == null) { return(BadRequest(ValidationMessages.EmailRequired)); } consumer = new Consumer(); } else { consumer.Deleted = null; consumer.GolferProfile = _repository.Query <GolferProfile>(x => x.ConsumerId == consumer.Id).FirstOrDefault(); consumer.ConsumerProfiles = _repository.Query <ConsumerProfile>(x => x.ConsumerId == consumer.Id) .Include(x => x.ConsumerOptIns) .ToList(); if (consumer.ConsumerProfiles != null && consumer.ConsumerProfiles.Any()) { var addressIds = consumer.ConsumerProfiles.Select(x => x.AddressId).ToList(); var consumerProfileIds = consumer.ConsumerProfiles.Select(x => x.Id).ToList(); var address = _repository.Query <Address>(x => addressIds.Contains(x.Id)).ToList(); var systemToConsumerProfiles = _repository.Query <SystemToConsumerProfile>(x => consumerProfileIds.Contains(x.ConsumerProfileId)).ToList(); foreach (var consumerProfile in consumer.ConsumerProfiles) { consumerProfile.Address = address.FirstOrDefault(x => x.Id == consumerProfile.AddressId); consumerProfile.SystemToConsumerProfiles = systemToConsumerProfiles.Where(x => x.ConsumerProfileId == consumerProfile.Id).ToList(); } } } UpdateConsumer(consumerModel, allowUpdateEmail, consumer); if (consumerModel.RegionId == null) { throw new Exception(ValidationMessages.RegionIdRequired); } if (consumer.ConsumerProfiles != null) { var consumerProfiles = consumer.ConsumerProfiles.Where(x => x.RegionId == consumerModel.RegionId.Value).ToList(); if (consumerProfiles.Any()) { foreach (var consumerProfile in consumerProfiles) { CreateOrUpdateConsumerProfile(consumerModel, consumerProfile, consumer); } } else { CreateNewConsumerProfile(consumerModel, consumer); } } else { CreateNewConsumerProfile(consumerModel, consumer); } var golferProfile = consumer.GolferProfile ?? new GolferProfile(); CreateOrUpdateGolfProfile(consumerModel, golferProfile, consumer); _repository.Save(consumer); return(Ok(consumer)); }