Пример #1
0
        public async Task <IActionResult> Update(Guid id, [FromBody] UpdateHostDto updateHostDto)
        {
            updateHostDto.Id = id;
            var result = await _unitOfWork.HostService.Update(updateHostDto);

            if (!result.Success)
            {
                return(result.ApiResult);
            }
            return(NoContent());
        }
Пример #2
0
        public async Task <Result> Update(UpdateHostDto updateHostDto)
        {
            var categories = new List <Category>();

            if (updateHostDto.Categories != null && updateHostDto.Categories.Any())
            {
                categories = await Context.Categories.AsNoTracking().Where(c =>
                                                                           updateHostDto.Categories.Contains(c.Id))
                             .ToListAsync();

                if (categories.Count != updateHostDto.Categories.Count)
                {
                    return(Result.Failed(new NotFoundObjectResult(
                                             new ApiMessage
                    {
                        Message = ResponseMessage.CategoryNotFound
                    })));
                }
            }

            var host = await FirstOrDefaultAsync(c => c.Id == updateHostDto.Id,
                                                 g => g.HostGalleries,
                                                 g => g.HostCategories,
                                                 g => g.HostAvailableDates);


            _mapper.Map(updateHostDto, host);

            Context.RemoveRange(host.HostCategories);
            Context.RemoveRange(host.HostGalleries);
            Context.RemoveRange(host.HostAvailableDates);
            host.HostCategories = categories.Any()
                ? categories.Select(c => new HostCategory
            {
                CategoryId = c.Id, Host = host, HostId = host.Id, Id = Guid.NewGuid()
            }).ToList()
                : new List <HostCategory>();
            host.HostGalleries = updateHostDto.Galleries.Any()
                ? updateHostDto.Galleries.Select(g => new HostGallery
            {
                Image = g, Host = host, HostId = host.Id, Id = Guid.NewGuid()
            })
                                 .ToList()
                : new List <HostGallery>();
            host.HostAvailableDates = updateHostDto.HostAvailableDates.Any()
                ? updateHostDto.HostAvailableDates.Select(date =>
            {
                var dateFromHour = date.FromHour;
                var dateToHour   = date.ToHour;
                TimeSpan fromHour;
                TimeSpan toHour;
                if (TimeSpan.TryParse(dateFromHour, out fromHour))
                {
                    if (TimeSpan.TryParse(dateToHour, out toHour))
                    {
                        return new HostAvailableDate
                        {
                            Days     = date.Days,
                            DateTime = date.DateTime,
                            FromHour = fromHour,
                            Host     = host,
                            HostId   = host.Id,
                            ToHour   = toHour,
                            Id       = Guid.NewGuid()
                        }
                    }
                }
                ;
                return(null);
            }).Where(a => a != null).ToList()
                : new List <HostAvailableDate>();

            Context.AddRange(host.HostCategories);
            Context.AddRange(host.HostGalleries);
            Context.AddRange(host.HostAvailableDates);

            await Context.SaveChangesAsync();

            return(Result.SuccessFull());
        }