Dilara PINAR
Dilara PINAR

Reputation: 11

Updating properties in a class that contains an Enum

You can see my PermissionUpdateDTO class below. My 'PermissionUpdateVM' class also has the same properties as these classes. PermissionStatus' and 'PermissionType' in this class are enums.

public class PermissionUpdateDTO
 {
     public int Id { get; set; }
     public int TotalLeaveDuration { get; set; }
     public DateTime StartDateOfLeave { get; set; }
     public DateTime EndDateOfLeave { get; set; }

     public DateTime RequestDateOfLeave = DateTime.Now;
     public DateTime DateOfLeaveApproval { get; set; }

     public PermissionStatus Status { get; set; }
     public PermissionType Type { get; set; }
 }

The Update method I have written in my PermissionService class, which inherits from my IPermissionService class to update these properties, is as follows:

  public ResultService<PermissionUpdateDTO> UpdateAsync(PermissionUpdateVM permissionUpdateVM)
        {
            ResultService<PermissionUpdateDTO> result = new ResultService<PermissionUpdateDTO>();

            Permission existingPermission =  _permissionRepo.GetFirstOrDefault(filter: x => x.Id == permissionUpdateVM.Id);

            if(existingPermission == null)
            {
                result.AddError(ErrorType.NotFound, "Kullanıcı Bulunamadı");
                return result;
            }

            existingPermission.TotalLeaveDuration = permissionUpdateVM.TotalLeaveDuration;
            existingPermission.StartDateOfLeave = permissionUpdateVM.StartDateOfLeave;
            existingPermission.EndDateOfLeave = permissionUpdateVM.EndDateOfLeave;
            existingPermission.RequestDateOfLeave= permissionUpdateVM.RequestDateOfLeave;
            existingPermission.DateOfLeaveApproval = permissionUpdateVM.DateOfLeaveApproval;

      
            if (Enum.IsDefined(typeof(PermissionStatus), permissionUpdateVM.Status))
            {
                existingPermission.Status = (PermissionStatus)permissionUpdateVM.Status;
            }
            else
            {
                result.AddError(ErrorType.InvalidData, "Geçersiz PermissionStatus değeri");
                return result;
            }


            if (Enum.IsDefined(typeof(PermissionType), permissionUpdateVM.Type))
            {
                existingPermission.Type = (PermissionType)permissionUpdateVM.Type;
            }
            else
            {
                result.AddError(ErrorType.InvalidData, "Geçersiz PermissionType değeri");
                return result;
            }

            _permissionRepo.Update(existingPermission);

            return result;

        }

The 'Status' part in 'existingPermission.Status = (PermissionStatus)permissionUpdateVM.Status;' and the 'Type' part in 'existingPermission.Type = (PermissionType)permissionUpdateVM.Type;' are giving the error 'Permission' does not contain a definition for 'Type' and no accessible extension method... How can I fix this?

I also want to mention that I attempted to make the method Task-based. However, when I converted the method to Task, I encountered an error in the 'return result;' part. That's why I did it this way.

Upvotes: 0

Views: 27

Answers (0)

Related Questions