public async Task <IActionResult> AssignSdrToCampaign([FromBody] AssignSdrToCampaignInputDto request)
        {
            try
            {
                var currentUser = await _userManager.FindByEmailFromClaimsPrinciple(HttpContext.User);

                var campaign = await _campaignService.GetCampaignById(request.CampaignId);

                if (campaign == null)
                {
                    return(BadRequest(new ApiResponse(400, "Campaign is not existing.")));
                }

                var userProfile = await _userProfileService.GetUserProfileById(request.UserProfileId);

                if (userProfile == null)
                {
                    return(BadRequest(new ApiResponse(400, "User Profile is not existing.")));
                }

                var user = await _userManager.FindByIdAsync(userProfile.UserId.ToString());

                var role = (await _userManager.GetRolesAsync(user)).First();

                if (role.ToLower() != "sdr")
                {
                    return(BadRequest(new ApiResponse(400, "User is not assigned as SDR.")));
                }

                var existingCampaignAssignment = await _campaignAssignmentService.GetExistingCampaignAssignment(request.CampaignId, request.UserProfileId);

                if (existingCampaignAssignment != null)
                {
                    return(BadRequest(new ApiResponse(400, "SDR is already assigned to this campaign.")));
                }

                var campaignAssignment = new CampaignAssignment {
                    CampaignId    = request.CampaignId,
                    UserProfileId = request.UserProfileId,
                    CreatedDate   = DateTime.UtcNow,
                    CreatedBy     = currentUser.Id.ToString()
                };

                await _campaignAssignmentService.CreateCampaignAssignment(campaignAssignment);

                return(Ok(new ApiResponse(200, "Success")));
            }
            catch
            {
                return(BadRequest(new ApiResponse(400, "Something went wrong.")));
            }
        }
Esempio n. 2
0
 public async Task DeleteAssignment(CampaignAssignment campaignAssignment)
 {
     _unitOfWork.Repository <CampaignAssignment>().Delete(campaignAssignment);
     await _unitOfWork.Complete();
 }
Esempio n. 3
0
 public async Task CreateCampaignAssignment(CampaignAssignment request)
 {
     _unitOfWork.Repository <CampaignAssignment>().Add(request);
     await _unitOfWork.Complete();
 }