public HttpResponseMessage InsertCustomerInformation(PrizeDataModel prizeData)
        {
            //Important: The sum of a customer prizes - PrizeAmount - needs to be exactly the amount distribute TotalPrizeAmount.
            string requestMessage = Helpers.ValidateParameterData(prizeData);

            if (!string.IsNullOrEmpty(requestMessage))
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, requestMessage));
            }
            else if (_PromoRepo.CheckCustomerExistsEF(prizeData.Customer))
            {
                requestMessage = $"Customer {prizeData.Customer.FirstName} {prizeData.Customer.LastName} Already Exists";
                return(Request.CreateResponse(HttpStatusCode.Conflict, requestMessage));
            }

            try
            {
                //throw new Exception(); //test for exceptions

                if (prizeData.numberOfPrizes > 0)
                {
                    List <PromoSpPrize> customerPrizes = new List <PromoSpPrize>();
                    List <decimal>      poolPrice      = Helpers.DistributeInBuckets((decimal)prizeData.totalPrizeAmount, (int)prizeData.numberOfPrizes).ToList <decimal>();

                    for (int i = 0; i < prizeData.numberOfPrizes; i++)
                    {
                        //create and add each new promoPrize to list

                        customerPrizes.Add(new PromoSpPrize
                        {
                            PrizeAmount    = poolPrice.ElementAt(i),
                            ActivationDate = DateTime.Now,
                            ExpirationDate = null,
                            RedeemedDate   = null,
                            IsRedeemed     = false
                        });
                    }

                    // save prizeData to db
                    if (_PromoRepo.InsertCustomerInformationEF(prizeData.Customer, customerPrizes))
                    {
                        requestMessage = $"Created: {prizeData.Customer.FirstName} {prizeData.Customer.LastName}";
                        return(Request.CreateResponse(HttpStatusCode.Created, requestMessage));
                    }
                }
            }
            catch (Exception ex)
            {
                requestMessage = $"{ex}";
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, requestMessage));
            }

            requestMessage = $"No Actions executed for Customer: {prizeData.Customer.FirstName} {prizeData.Customer.LastName}";
            return(Request.CreateResponse(HttpStatusCode.InternalServerError, requestMessage));
        }
Esempio n. 2
0
        public static string ValidateParameterData(PrizeDataModel prizeData, bool checkNumerics = true)
        {
            string requestMessage = string.Empty;
            string newLine        = Environment.NewLine;

            //always check cu info
            if (prizeData == null)
            {
                requestMessage += $"Request Data Object [FromBody] is null, cannot bind data,{newLine}";
            }
            else if (prizeData.Customer == null)
            {
                requestMessage += $"Request Data Object [Customer] is null,{newLine}";
            }
            else if (string.IsNullOrEmpty(prizeData.Customer.FirstName))
            {
                requestMessage += $"Parameter [Customer.FirstName] is required,{newLine}";
            }
            else if (string.IsNullOrEmpty(prizeData.Customer.LastName))
            {
                requestMessage += $"Parameter [Customer.LastName] is required,{newLine}";
            }

            //checking numerics

            if (checkNumerics)
            {
                if (prizeData.numberOfPrizes == null || prizeData.numberOfPrizes < 1)
                {
                    requestMessage += $"Parameter [numberOfPrizes] is required,{newLine}";
                }
                else if (prizeData.totalPrizeAmount == null)
                {
                    requestMessage += $"Parameter [totalPrizeAmount] is required,{newLine}";
                }
            }

            return(requestMessage);
        }