示例#1
0
        public async Task <bool> ActiveAsync(FarmModifyRequest request)
        {
            await _farmRepository.Get(x => x.Id == request.Id)
            .Set(x => x.StatusId, (int)FarmStatus.Actived)
            .Set(x => x.UpdatedById, request.UpdatedById)
            .Set(x => x.UpdatedDate, DateTimeOffset.UtcNow)
            .UpdateAsync();

            return(true);
        }
示例#2
0
        public async Task <bool> ActivateAsync(FarmModifyRequest request)
        {
            await _farmPictureRepository.UpdateStatusByFarmIdAsync(new FarmPicturesModifyRequest
            {
                FarmId      = request.Id,
                UpdatedById = request.UpdatedById
            }, PictureStatus.Actived);

            return(await _farmRepository.ActiveAsync(request));
        }
示例#3
0
        public async Task <bool> SoftDeleteAsync(FarmModifyRequest request)
        {
            // Soft delete farm pictures
            await _farmPictureRepository.UpdateStatusByFarmIdAsync(new FarmPicturesModifyRequest
            {
                FarmId      = request.Id,
                UpdatedById = request.UpdatedById
            }, PictureStatus.Deleted);

            return(await _farmRepository.SoftDeleteAsync(request));
        }
示例#4
0
        public async Task <bool> DeactivateAsync(FarmModifyRequest request)
        {
            await UpdateProductStatusByFarmIdAsync(request, ProductStatus.Inactived);

            await _farmRepository.Get(x => x.Id == request.Id)
            .Set(x => x.StatusId, FarmStatus.Inactived.GetCode())
            .Set(x => x.UpdatedById, request.UpdatedById)
            .Set(x => x.UpdatedDate, DateTimeOffset.UtcNow)
            .UpdateAsync();

            return(true);
        }
示例#5
0
        public async Task <bool> SoftDeleteAsync(FarmModifyRequest request)
        {
            // Delete farm products
            await UpdateProductStatusByFarmIdAsync(request, ProductStatus.Deleted);

            // Delete farm
            await _farmRepository.Get(x => x.Id == request.Id)
            .Set(x => x.StatusId, (int)FarmStatus.Deleted)
            .Set(x => x.UpdatedById, request.UpdatedById)
            .Set(x => x.UpdatedDate, DateTimeOffset.UtcNow)
            .UpdateAsync();

            return(true);
        }
示例#6
0
        public async Task <IActionResult> Update(FarmModel model)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToErrorPage());
            }

            if (model.Id <= 0)
            {
                return(RedirectToErrorPage());
            }

            var exist = await _farmService.FindAsync(new IdRequestFilter <long>
            {
                Id              = model.Id,
                CanGetDeleted   = true,
                CanGetInactived = true
            });

            if (exist == null)
            {
                return(RedirectToErrorPage());
            }

            var farm = new FarmModifyRequest()
            {
                Id          = model.Id,
                UpdatedById = LoggedUserId,
                CreatedById = LoggedUserId,
                Name        = model.Name,
                Description = model.Description,
                FarmTypeId  = model.FarmTypeId
            };

            if (model.Pictures != null && model.Pictures.Any())
            {
                farm.Pictures = model.Pictures.Select(x => new PictureRequest()
                {
                    Base64Data  = x.Base64Data,
                    ContentType = x.ContentType,
                    FileName    = x.FileName,
                    Id          = x.PictureId
                });
            }

            farm.UpdatedById = LoggedUserId;
            await _farmService.UpdateAsync(farm);

            return(RedirectToAction(nameof(Detail), new { id = farm.Id }));
        }
示例#7
0
        public async Task <bool> UpdateAsync(FarmModifyRequest request)
        {
            var updatedDate = DateTimeOffset.UtcNow;
            var farm        = _farmRepository.FirstOrDefault(x => x.Id == request.Id);

            farm.Description = request.Description;
            farm.Name        = request.Name;
            farm.FarmTypeId  = request.FarmTypeId;
            farm.UpdatedById = request.UpdatedById;
            farm.UpdatedDate = updatedDate;
            farm.Address     = request.Address;

            await _farmRepository.UpdateAsync(farm);

            return(true);
        }
示例#8
0
        public async Task <FarmModel> UpdateFarmAsync(ClaimsPrincipal claimsPrincipal, FarmModel criterias)
        {
            var exist = await _farmService.FindAsync(new IdRequestFilter <long>
            {
                Id = criterias.Id,
                CanGetInactived = true
            });

            if (exist == null)
            {
                throw new Exception("No article found");
            }

            var currentUserId = GetCurrentUserId(claimsPrincipal);

            if (currentUserId != exist.CreatedById)
            {
                throw new UnauthorizedAccessException();
            }

            var farm = new FarmModifyRequest()
            {
                Id          = criterias.Id,
                CreatedById = currentUserId,
                UpdatedById = currentUserId,
                Description = criterias.Description,
                Name        = criterias.Name,
                FarmTypeId  = criterias.FarmTypeId,
                Address     = criterias.Address,
            };

            if (criterias.Pictures != null && criterias.Pictures.Any())
            {
                farm.Pictures = criterias.Pictures.Select(x => new PictureRequest()
                {
                    Base64Data  = x.Base64Data,
                    ContentType = x.ContentType,
                    FileName    = x.FileName,
                    Id          = x.PictureId
                });
            }

            await _farmService.UpdateAsync(farm);

            return(criterias);
        }
示例#9
0
        public async Task <long> CreateAsync(FarmModifyRequest request)
        {
            var modifiedDate = DateTimeOffset.UtcNow;
            var newFarm      = new Farm()
            {
                FarmTypeId  = request.FarmTypeId,
                Name        = request.Name,
                Address     = request.Address,
                UpdatedById = request.UpdatedById,
                CreatedById = request.CreatedById,
                CreatedDate = modifiedDate,
                UpdatedDate = modifiedDate,
                Description = request.Description,
                StatusId    = FarmStatus.Pending.GetCode()
            };

            return(await _farmRepository.AddWithInt64EntityAsync(newFarm));
        }
示例#10
0
        public async Task <bool> UpdateAsync(FarmModifyRequest request)
        {
            var modifiedDate = DateTimeOffset.UtcNow;

            request.UpdatedDate = modifiedDate;
            var isUpdated = await _farmRepository.UpdateAsync(request);

            if (isUpdated)
            {
                await _farmPictureRepository.UpdateAsync(new FarmPicturesModifyRequest
                {
                    FarmId      = request.Id,
                    CreatedById = request.CreatedById,
                    UpdatedById = request.UpdatedById,
                    CreatedDate = modifiedDate,
                    UpdatedDate = modifiedDate,
                    Pictures    = request.Pictures
                });
            }
            return(isUpdated);
        }
示例#11
0
        private async Task UpdateProductStatusByFarmIdAsync(FarmModifyRequest request, ProductStatus productStatus)
        {
            var productIds = _farmProductRepository.Get(x => x.FarmId == request.Id)
                             .Select(x => x.ProductId);

            var pictureStatus = productStatus switch
            {
                ProductStatus.Pending => PictureStatus.Pending,
                ProductStatus.Actived => PictureStatus.Actived,
                ProductStatus.Reported => PictureStatus.Reported,
                ProductStatus.Deleted => PictureStatus.Deleted,
                _ => PictureStatus.Inactived,
            };
            await _productPictureRepository.UpdateStatusByProductIdsAsync(productIds, request.UpdatedById, pictureStatus);

            await _productRepository.Get(x => x.Id.In(productIds))
            .Set(x => x.StatusId, productStatus.GetCode())
            .Set(x => x.UpdatedById, request.UpdatedById)
            .Set(x => x.UpdatedDate, DateTimeOffset.UtcNow)
            .UpdateAsync();
        }
示例#12
0
        public async Task <long> CreateAsync(FarmModifyRequest request)
        {
            var modifiedDate = DateTimeOffset.UtcNow;

            request.CreatedDate = modifiedDate;
            request.UpdatedDate = modifiedDate;
            var id = await _farmRepository.CreateAsync(request);

            if (id > 0 && request.Pictures.Any())
            {
                await _farmPictureRepository.CreateAsync(new FarmPicturesModifyRequest
                {
                    CreatedById = request.CreatedById,
                    CreatedDate = request.CreatedDate,
                    FarmId      = id,
                    Pictures    = request.Pictures,
                    UpdatedById = request.UpdatedById,
                    UpdatedDate = request.UpdatedDate
                });
            }

            return(id);
        }
示例#13
0
        public async Task <FarmModel> CreateFarmAsync(ClaimsPrincipal claimsPrincipal, FarmModel criterias)
        {
            var currentUserId = GetCurrentUserId(claimsPrincipal);
            var farm          = new FarmModifyRequest()
            {
                CreatedById = currentUserId,
                UpdatedById = currentUserId,
                Description = criterias.Description,
                Name        = criterias.Name,
                FarmTypeId  = criterias.FarmTypeId,
                Address     = criterias.Address,
                Pictures    = criterias.Pictures.Select(x => new PictureRequest()
                {
                    Base64Data  = x.Base64Data,
                    FileName    = x.FileName,
                    ContentType = x.ContentType,
                }),
            };

            var id = await _farmService.CreateAsync(farm);

            criterias.Id = id;
            return(criterias);
        }