public async Task Create([FromBody] ResponseJsonPayload payload)
        {
            try
            {
                if (payload != null && payload.responseDetails != null)
                {
                    ResponseUser user = new ResponseUser();
                    user.surveyId  = payload.surveyId;
                    user.userName  = payload.userName;
                    user.userPhone = payload.userPhone;
                    user.userEmail = payload.userEmail;
                    user.optIn     = payload.optIn;

                    await _surveyResponseRepository.AddResponseUser(user);

                    // get _id of inserted item
                    var newUserId = user.internalId;

                    // construct response and user objects
                    var responseDetails = payload.responseDetails;
                    foreach (var rd in responseDetails)
                    {
                        Response responseObj = new Response();
                        responseObj.surveyId   = rd.surveyId;
                        responseObj.questionId = rd.questionId;
                        responseObj.choice     = rd.choice;
                        responseObj.userId     = newUserId;

                        await _surveyResponseRepository.AddResponse(responseObj);
                    }

                    // generate random coupon code and insert into couponCode collection
                    int        randomNum = GenerateRandomNo();
                    CouponCode coupon    = new CouponCode();
                    coupon.userId = newUserId;
                    coupon.code   = randomNum;
                    await _surveyResponseRepository.AddCouponCode(coupon);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }