示例#1
0
 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;
     }
 }
示例#2
0
        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));
        }
示例#3
0
        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));
        }
示例#4
0
        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));
        }
示例#5
0
        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;
                }
            }
        }
示例#6
0
        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;
            }
        }
示例#7
0
        private static void CreateNewConsumerProfile(ConsumerTo consumerModel, Consumer consumer)
        {
            var consumerProfile = new ConsumerProfile();

            CreateOrUpdateConsumerProfile(consumerModel, consumerProfile, consumer);
        }
示例#8
0
        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));
        }