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; } }