public async Task <ExamRoom> Update(ExamRoom examRoom)
        {
            if (!await ExamRoomValidator.Update(examRoom))
            {
                return(examRoom);
            }

            using (UOW.Begin())
            {
                try
                {
                    await UOW.ExamRoomRepository.Update(examRoom);

                    await UOW.Commit();

                    return(await UOW.ExamRoomRepository.Get(examRoom.Id));
                }
                catch (Exception e)
                {
                    await UOW.Rollback();

                    examRoom.AddError(nameof(ExamRoomService), nameof(Update), CommonEnum.ErrorCode.SystemError);
                    return(examRoom);
                }
            }
        }
 private bool ValidateStringLength(ExamRoom examRoom)
 {
     if (examRoom.RoomNumber < 0)
     {
         examRoom.AddError(nameof(ExamRoomValidator), nameof(examRoom), ERROR.RoomNumberInvalid);
         return(false);
     }
     if (examRoom.ComputerNumber <= 0)
     {
         examRoom.AddError(nameof(ExamRoomValidator), nameof(examRoom), ERROR.ComputerNumberInvalid);
         return(false);
     }
     if (string.IsNullOrEmpty(examRoom.AmphitheaterName))
     {
         examRoom.AddError(nameof(ExamRoomValidator), nameof(examRoom), ERROR.AmphitheaterNameEmpty);
         return(false);
     }
     else if (examRoom.AmphitheaterName.Length > 100)
     {
         examRoom.AddError(nameof(ExamRoomValidator), nameof(examRoom), ERROR.AmphitheaterNameInvalid);
         return(false);
     }
     return(true);
 }
        /*private async Task<bool> ValidateExist(ExamRoom examRoom)
         * {
         *  ExamRoomFilter filter = new ExamRoomFilter
         *  {
         *      Take = Int32.MaxValue,
         *      RoomNumber = new ShortFilter { Equal = examRoom.RoomNumber },
         *      AmphitheaterName = new StringFilter { Equal = examRoom.AmphitheaterName }
         *  };
         *
         *  int count = await UOW.ExamRoomRepository.Count(filter);
         *  if (count == 0)
         *  {
         *      examRoom.AddError(nameof(ExamRoomValidator), nameof(examRoom), ERROR.NotExisted);
         *      return false;
         *  }
         *  return true;
         * }*/
        public async Task <bool> ValidateId(ExamRoom examRoom)
        {
            ExamRoomFilter filter = new ExamRoomFilter
            {
                Id = new GuidFilter {
                    Equal = examRoom.Id
                }
            };

            int count = await UOW.ExamRoomRepository.Count(filter);

            if (count == 0)
            {
                examRoom.AddError(nameof(ExamRoomValidator), nameof(examRoom), ERROR.IdNotFound);
            }

            return(count == 1);
        }
        private async Task <bool> ValidateNotExist(ExamRoom examRoom)
        {
            ExamRoomFilter filter = new ExamRoomFilter
            {
                Take       = Int32.MaxValue,
                RoomNumber = new ShortFilter {
                    Equal = examRoom.RoomNumber
                },
                AmphitheaterName = new StringFilter {
                    Equal = examRoom.AmphitheaterName
                }
            };

            int count = await UOW.ExamRoomRepository.Count(filter);

            if (count > 0)
            {
                examRoom.AddError(nameof(ExamRoomValidator), nameof(examRoom), ERROR.ExamRoomExisted);
                return(false);
            }
            return(true);
        }