public async Task <ApiResponse> Handle(AddProjectActivityDetailCommand request, CancellationToken cancellationToken)
        {
            ApiResponse response = new ApiResponse();

            try
            {
                ProjectActivityDetail obj = _mapper.Map <AddProjectActivityDetailCommand, ProjectActivityDetail>(request);
                obj.CreatedDate = DateTime.UtcNow;
                obj.IsDeleted   = false;
                obj.CreatedById = request.CreatedById;
                await _dbContext.ProjectActivityDetail.AddAsync(obj);

                await _dbContext.SaveChangesAsync();

                if (request.ProvinceId != null)
                {
                    List <ProjectActivityProvinceDetail> activityProvienceList = new List <ProjectActivityProvinceDetail>();

                    var districts = _dbContext.DistrictDetail.Where(x => x.IsDeleted == false && request.ProvinceId.Contains(x.ProvinceID.Value)).ToList();

                    var selectedDistrict = districts.Where(x => request.DistrictID.Contains(x.DistrictID))
                                           .Select(x => new ProjectActivityProvinceDetail
                    {
                        DistrictID = x.DistrictID,
                        ProvinceId = x.ProvinceID.Value
                    }).ToList();

                    // var provincesWithNoDistrict= selectedDistrict.Where(x => !model.ProvinceId.Contains(x.ProvinceId));

                    var provincesWithNoDistrict = request.ProvinceId.Where(x => !selectedDistrict.Select(y => y.ProvinceId).Contains(x)).ToList();

                    foreach (var item in provincesWithNoDistrict)
                    {
                        ProjectActivityProvinceDetail projectActivityProvinceDetail = new ProjectActivityProvinceDetail();
                        projectActivityProvinceDetail.ProvinceId = item;
                        selectedDistrict.Add(projectActivityProvinceDetail);
                    }

                    foreach (var item in selectedDistrict)
                    {
                        item.ActivityId  = obj.ActivityId;
                        item.CreatedById = request.CreatedById;
                        item.CreatedDate = request.CreatedDate;
                        item.IsDeleted   = false;
                    }
                    // await _uow.ProjectActivityProvinceDetailRepository.A(obj);
                    await _dbContext.ProjectActivityProvinceDetail.AddRangeAsync(selectedDistrict);

                    await _dbContext.SaveChangesAsync();
                }

                response.StatusCode = StaticResource.successStatusCode;
                response.Message    = "Success";
            }
            catch (Exception ex)
            {
                response.StatusCode = StaticResource.failStatusCode;
                response.Message    = StaticResource.SomethingWrong + ex.Message;
            }
            return(response);
        }
Esempio n. 2
0
        public async Task <ApiResponse> Handle(EditProjectActivityDetailCommand request, CancellationToken cancellationToken)
        {
            ApiResponse response = new ApiResponse();

            try
            {
                var projectactivityDetail = await _dbContext.ProjectActivityDetail.FirstOrDefaultAsync(x => x.ActivityId == request.ActivityId && x.IsDeleted == false);

                if (projectactivityDetail != null)
                {
                    _mapper.Map(request, projectactivityDetail);

                    projectactivityDetail.ModifiedDate = request.ModifiedDate;
                    projectactivityDetail.ModifiedById = request.ModifiedById;
                    projectactivityDetail.IsDeleted    = false;

                    await _dbContext.SaveChangesAsync();

                    if (request.ProvinceId.Any())
                    {
                        var projectActivityProvinceDetailExist = _dbContext.ProjectActivityProvinceDetail.Where(x => x.ActivityId == request.ActivityId && x.IsDeleted == false);

                        if (projectActivityProvinceDetailExist.Any())
                        {
                            _dbContext.ProjectActivityProvinceDetail.RemoveRange(projectActivityProvinceDetailExist);
                            _dbContext.SaveChanges();
                        }

                        List <ProjectActivityProvinceDetail> activityProvienceList = new List <ProjectActivityProvinceDetail>();


                        var districts = _dbContext.DistrictDetail.Where(x => x.IsDeleted == false && request.ProvinceId.Contains(x.ProvinceID.Value)).ToList();

                        var selectedDistrict = districts.Where(x => request.DistrictID.Contains(x.DistrictID))
                                               .Select(x => new ProjectActivityProvinceDetail
                        {
                            DistrictID = x.DistrictID,
                            ProvinceId = x.ProvinceID.Value
                        }).ToList();
                        var provincesWithNoDistrict = request.ProvinceId.Where(x => !selectedDistrict.Select(y => y.ProvinceId).Contains(x)).ToList();

                        foreach (var item in provincesWithNoDistrict)
                        {
                            ProjectActivityProvinceDetail projectActivityProvince = new ProjectActivityProvinceDetail();
                            projectActivityProvince.ProvinceId = item;
                            selectedDistrict.Add(projectActivityProvince);
                        }

                        foreach (var item in selectedDistrict)
                        {
                            item.ActivityId   = projectactivityDetail.ActivityId;
                            item.ModifiedById = request.ModifiedById;
                            item.ModifiedDate = request.ModifiedDate;
                            item.IsDeleted    = false;
                        }
                        await _dbContext.ProjectActivityProvinceDetail.AddRangeAsync(selectedDistrict);

                        await _dbContext.SaveChangesAsync();
                    }

                    response.StatusCode = StaticResource.successStatusCode;
                    response.Message    = "Success";
                }
                else
                {
                    response.StatusCode = StaticResource.failStatusCode;
                    response.Message    = StaticResource.ActivityNotFound;
                }
            }
            catch (Exception ex)
            {
                response.StatusCode = StaticResource.failStatusCode;
                response.Message    = StaticResource.SomethingWrong + ex.Message;
            }
            return(response);
        }