public User CreateUser(User user) { try { using (CapitalContext context = new CapitalContext()) { if (context.Users.Where(x => x.Email.ToLower() == user.Email.ToLower()).FirstOrDefault() == null) { user.CreationDate = DateTime.Now; user.LastAccessDate = DateTime.Now; ValidationContext valContext = new ValidationContext(this, null, null); var errors = user.Validate(valContext); if (errors.Count() == 0) { context.Users.Add(user); context.SaveChanges(); return context.Users.FirstOrDefault(x => x.Email == user.Email); } else throw new ModelException(errors); } else { throw new ModelException("Email Address Already Exists!"); } } } catch (DbEntityValidationException ex) { throw new ModelException(ex); } catch (DbUnexpectedValidationException ex) { throw new ModelException(ex); } catch (ModelException ex) { throw ex; } catch (Exception ex) { LogError(user, ex, System.Reflection.MethodBase.GetCurrentMethod().Name); throw ex; } }