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.")));
            }
        }
Пример #2
0
        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
            });
        }
Пример #3
0
        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();
        }