public async Task <GroupManagerResponse> CreateGroupAsync(GroupForDto model, string userId)
        {
            if (model == null)
            {
                throw new NullReferenceException("Group model is null.");
            }


            await using (_context)
            {
                var file         = model.File;
                var uploadResult = new ImageUploadResult();

                if (file != null)
                {
                    await using (var steam = file.OpenReadStream())
                    {
                        var uploadParams = new ImageUploadParams
                        {
                            File = new FileDescription(file.Name, steam)
                        };
                        uploadResult = _cloudinary.Upload(uploadParams);
                    }
                    model.Url      = uploadResult.Url.ToString();
                    model.PublicId = uploadResult.PublicId;
                }


                var group = new Group
                {
                    Id        = Guid.NewGuid().ToString(),
                    GroupName = model.GroupName,
                    PhotoUrl  = model?.Url
                };
                var user = await _userManager.FindByIdAsync(userId);

                var groupMember = new GroupMember
                {
                    GroupId   = group.Id,
                    UserId    = user.Id,
                    Role      = "Admin",
                    FirstName = user.FirstName,
                    LastName  = user.LastName
                };

                await _context.AddAsync(groupMember);

                await _context.AddAsync(group);

                await _context.SaveChangesAsync();

                return(new GroupManagerResponse
                {
                    Message = "Grup oluşturuldu.",
                    IsSuccess = true
                });
            }
        }
        public async Task <GroupManagerResponse> UpdateGroupAsync(GroupForDto model, string userId)
        {
            if (model == null)
            {
                throw new NullReferenceException("Group model is null.");
            }

            await using (_context)
            {
                var group = await _context.Groups.FindAsync(model.GroupId);

                var userClaim = await _context.GroupMembers.SingleOrDefaultAsync(u =>
                                                                                 u.GroupId == model.GroupId && u.UserId == userId && u.Role == "Admin");

                if (group == null || userClaim == null)
                {
                    return(new GroupManagerResponse
                    {
                        Message = "Grup bulunamadı veya bu işlem için yetkiniz yok.",
                        IsSuccess = false
                    });
                }

                if (model.GroupName != null)
                {
                    group.GroupName = model.GroupName;
                }

                var file         = model.File;
                var uploadResult = new ImageUploadResult();

                if (file != null)
                {
                    await using (var steam = file.OpenReadStream())
                    {
                        var uploadParams = new ImageUploadParams
                        {
                            File = new FileDescription(file.Name, steam)
                        };
                        uploadResult = _cloudinary.Upload(uploadParams);
                    }
                    model.Url      = uploadResult.Url.ToString();
                    model.PublicId = uploadResult.PublicId;
                    group.PhotoUrl = model.Url.ToString();
                }

                _context.Update(group);
                await _context.SaveChangesAsync();

                return(new GroupManagerResponse
                {
                    Message = "Grup düzenlendi.",
                    IsSuccess = true
                });
            }
        }
Exemple #3
0
        public IActionResult UpdateGroup([FromForm] GroupForDto model)
        {
            var userId = User.FindFirst(ClaimTypes.NameIdentifier).Value;

            if (ModelState.IsValid)
            {
                var group = _groupService.UpdateGroupAsync(model, userId);

                if (group.Result.IsSuccess)
                {
                    return(Ok(group.Result));
                }

                return(BadRequest(group.Result));
            }

            return(BadRequest("Some properties are not valid."));
        }