public async Task <IActionResult> UploadScheduler([FromForm] UploadSchedulerInputDto request) { try { var user = await _userManager.FindByEmailFromClaimsPrinciple(HttpContext.User); var validationResponse = await _schedulerService.ValidateUploadInput(request); if (!validationResponse.IsSuccess) { return(BadRequest(new ApiResponse(validationResponse.StatusCode, validationResponse.Message))); } var schedulers = await ReadSchedulerCsv(request.CsvData); if (schedulers == null) { return(BadRequest(new ApiResponse(400, "File has no content."))); } var content = schedulers.Select(s => s.Result).ToList(); var states = content.Select(s => s.Location).ToArray(); var contentMapped = _mapper.Map <List <Scheduler> >(content); await _schedulerService.InsertScheduler(contentMapped, request, user.Id.ToString()); return(Ok(new ApiResponse(200, "Success"))); } catch (Exception x) { return(BadRequest(new ApiResponse(400, "Something went wrong."))); } }
public async Task <ValidationOutputDto> ValidateUploadInput(UploadSchedulerInputDto request) { var campaign = await _unitOfWork.Repository <Campaign>().GetByIdAsync(request.CampaignId); if (campaign == null) { return new ValidationOutputDto { IsSuccess = false, StatusCode = 400, Message = "Campaign is not existing." } } ; var userProfile = await _unitOfWork.Repository <UserProfile>().GetByIdAsync(request.UserProfileId); if (userProfile == null) { return new ValidationOutputDto { IsSuccess = false, StatusCode = 400, Message = "User Profile is not existing." } } ; var ext = Path.GetExtension(request.CsvData.FileName); if (ext != ".csv") { return new ValidationOutputDto { IsSuccess = false, StatusCode = 400, Message = "Uploaded file is not type of CSV." } } ; if (request.CsvData.Length <= 0) { return(new ValidationOutputDto { IsSuccess = false, StatusCode = 400, Message = "File has no content" }); } return(new ValidationOutputDto { IsSuccess = true, StatusCode = 200, Message = string.Empty }); }
public async Task InsertScheduler(List <Scheduler> schedulers, UploadSchedulerInputDto request, string userId) { schedulers = schedulers.Select(s => { s.UserProfileId = request.UserProfileId; s.CampaignId = request.CampaignId; s.CreatedBy = userId; s.CreatedDate = DateTime.UtcNow; return(s); }).ToList(); _unitOfWork.Repository <Scheduler>().AddRange(schedulers); await _unitOfWork.Complete(); }