public int AddResearcherAvailability(int researcherId, DateTime startDate, DateTime endDate)
        {
            using (ScheduleExEntities ctx = new ScheduleExEntities())
            {
                DataAccess.ResearcherAvailability ra = new DataAccess.ResearcherAvailability();
                ra.ResearcherId = researcherId;
                ra.StartDate    = startDate;
                ra.EndDate      = endDate;

                ctx.ResearcherAvailabilities.Add(ra);
                ctx.SaveChanges();
                return(ra.AvailabilityId);
            }
        }
 public bool DeleteResearcherAvailability(int availabilityId)
 {
     using (ScheduleExEntities ctx = new ScheduleExEntities())
     {
         DataAccess.ResearcherAvailability ra = ctx.ResearcherAvailabilities.FirstOrDefault(r => r.AvailabilityId == availabilityId);
         if (ra == null)
         {
             return(false);
         }
         else
         {
             ctx.ResearcherAvailabilities.Remove(ra);
             ctx.SaveChanges();
             return(true);
         }
     }
 }
 public bool UpdateResearcherAvailability(int availabilityId, DateTime startDate, DateTime endDate)
 {
     using (ScheduleExEntities ctx = new ScheduleExEntities())
     {
         DataAccess.ResearcherAvailability ra = ctx.ResearcherAvailabilities.FirstOrDefault(r => r.AvailabilityId == availabilityId);
         if (ra == null)
         {
             return(false);
         }
         else
         {
             ra.StartDate = startDate;
             ra.EndDate   = endDate;
             return(true);
         }
     }
 }
示例#4
0
        public int RegisterUser(string firstName, string lastName, string email, string hashPwd, string city, string state, long phonenumber, string expertiseIdsStr, string organization, string almaMater, string availableMonthsStr)
        {
            try
            {
                using (DataAccess.ScheduleExEntities ctx = new DataAccess.ScheduleExEntities())
                {
                    if (ctx.Users.Any(u => u.Email.Equals(email, StringComparison.InvariantCultureIgnoreCase)))
                    {
                        throw new Exception(string.Format("Email '{0}' already exists.", email));
                    }

                    DataAccess.User newUser = new DataAccess.User();
                    newUser.FirstName    = firstName;
                    newUser.LastName     = lastName;
                    newUser.Email        = email;
                    newUser.HashPwd      = hashPwd;
                    newUser.City         = city;
                    newUser.State        = state;
                    newUser.RoleId       = ctx.Roles.First(r => r.RoleName.Equals("Researcher", StringComparison.InvariantCultureIgnoreCase)).RoleId;
                    newUser.PhoneNumber  = phonenumber;
                    newUser.Organization = organization;
                    newUser.AlmaMater    = almaMater;
                    ctx.Users.Add(newUser);
                    ctx.SaveChanges();
                    List <int> expertiseIds = expertiseIdsStr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList().ConvertAll(int.Parse);
                    foreach (int expertiseId in expertiseIds)
                    {
                        DataAccess.ResearcherExpertis expertise = new DataAccess.ResearcherExpertis();
                        expertise.ExpertiseId  = expertiseId;
                        expertise.ResearcherId = newUser.UserId;
                        ctx.ResearcherExpertises.Add(expertise);
                    }
                    List <int> availableMonths = availableMonthsStr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList().ConvertAll(int.Parse);
                    foreach (int availableMonth in availableMonths)
                    {
                        DataAccess.ResearcherAvailability availability = new DataAccess.ResearcherAvailability();
                        availability.Month        = availableMonth;
                        availability.ResearcherId = newUser.UserId;
                        ctx.ResearcherAvailabilities.Add(availability);
                    }
                    ctx.SaveChanges();

                    return(newUser.UserId);
                }
            }
            catch (DbEntityValidationException e)
            {
                string error = string.Empty;
                foreach (var eve in e.EntityValidationErrors)
                {
                    Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                      eve.Entry.Entity.GetType().Name, eve.Entry.State);
                    foreach (var ve in eve.ValidationErrors)
                    {
                        Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                          ve.PropertyName, ve.ErrorMessage);

                        error += ve.ErrorMessage;
                    }
                }
                throw new Exception("Validation Failed." + error);
            }
            catch (System.Data.Entity.Infrastructure.DbUpdateException ue)
            {
                throw;
            }
        }