コード例 #1
0
 //This Method Remove a Crew Member from a given Crew
 public void RemoveCrewMember(int memberId, int crewId)
 {
     using (var context = new MarigoldSystemContext())
     {
         CrewMember member = context.CrewMembers.Find(memberId);
         context.CrewMembers.Remove(member);
         context.SaveChanges();
     }
 }
コード例 #2
0
 public void UpdateJobCard(int jobCardId, string completedDate)
 {
     using (var context = new MarigoldSystemContext())
     {
         JobCard jobCard = context.JobCards.Find(jobCardId);
         jobCard.ClosedDate = DateTime.Parse(completedDate);
         context.Entry(jobCard).Property(x => x.ClosedDate).IsModified = true;
         context.Entry(jobCard).State = System.Data.Entity.EntityState.Modified;
         context.SaveChanges();
     }
 }
コード例 #3
0
        public void UpdateCrew(int crewId, int KmStart, int KmEnd, string comment)
        {
            using (var context = new MarigoldSystemContext())
            {
                Crew crew = context.Crews.Find(crewId);
                if (crew == null)
                {
                    throw new Exception("This crew does not exist anymore");
                }
                else
                {
                    string message = "";
                    if (KmStart == 0)
                    {
                        message += "KM Start cannot be equal to 0. ";
                    }
                    if (KmEnd == 0)
                    {
                        message += " KM End cannot be equal to 0. ";
                    }

                    if (KmStart > KmEnd)
                    {
                        message += " KM Start cannot be greater than KM End";
                    }

                    if (string.IsNullOrEmpty(message))
                    {
                        crew.KM_Start = KmStart;
                        context.Entry(crew).Property(x => x.KM_Start).IsModified = true;
                        crew.KM_End = KmEnd;
                        context.Entry(crew).Property(x => x.KM_End).IsModified = true;

                        if (!string.IsNullOrEmpty(comment))
                        {
                            crew.AdditionalComments = comment;
                            context.Entry(crew).Property(x => x.AdditionalComments).IsModified = true;
                        }

                        context.Entry(crew).State = System.Data.Entity.EntityState.Modified;
                        context.SaveChanges();
                    }
                    else
                    {
                        throw new Exception(message);
                    }
                }
            }
        }
コード例 #4
0
        /// <summary>
        /// This method deletes a crew
        ///     It deletes all the Crew members associated to the crew
        ///     It deletes all the JobCards assigned to the Crew
        ///     It deletes the crew table
        /// </summary>
        /// <param name="crewId"></param>
        public void DeleteCrew(int crewId)
        {
            using (var context = new MarigoldSystemContext())
            {
                Crew crew = context.Crews.Find(crewId);
                if (crew == null)
                {
                    throw new Exception("This Crew  no longer exists");
                }
                else
                {
                    List <CrewMember>  crewMembers  = crew.CrewMembers.Select(x => x).ToList();
                    List <JobCardCrew> jobCardCrews = crew.JobCardCrews.Select(x => x).ToList();
                    if (crewMembers.Count() > 0)
                    {
                        foreach (CrewMember cm in crewMembers)
                        {
                            context.CrewMembers.Remove(cm);
                        }
                    }

                    if (jobCardCrews.Count() > 0)
                    {
                        foreach (JobCardCrew jobCardCrew in jobCardCrews)
                        {
                            int jobCardId = jobCardCrew.JobCardID;
                            int count     = context.JobCardCrews
                                            .Where(x => x.JobCardID == jobCardId)
                                            .Select(x => x)
                                            .Count();
                            if (count > 1)
                            {
                                context.JobCardCrews.Remove(jobCardCrew);
                            }
                            else
                            {
                                JobCard jobCard = context.JobCards.Find(jobCardId);
                                context.JobCardCrews.Remove(jobCardCrew);
                                context.JobCards.Remove(jobCard);
                            }
                        }
                    }
                }
                context.Crews.Remove(crew);
                context.SaveChanges();
            }
        }
コード例 #5
0
 /// <summary>
 /// This method deletes a jobCard
 /// </summary>
 /// <param name="jobCardId"></param>
 public void DeleteJobCardCrew(int jobCardCrewId)
 {
     using (var context = new MarigoldSystemContext())
     {
         JobCardCrew jobCardCrew = context.JobCardCrews.Find(jobCardCrewId);
         int         count       = context.JobCardCrews
                                   .Where(x => x.JobCardID == jobCardCrew.JobCardID)
                                   .Select(x => x)
                                   .Count();
         if (count > 1)
         {
             context.JobCardCrews.Remove(jobCardCrew);
         }
         else
         {
             int     jobCardId = jobCardCrew.JobCardID;
             JobCard jobCard   = context.JobCards.Find(jobCardId);
             context.JobCardCrews.Remove(jobCardCrew);
             context.JobCards.Remove(jobCard);
         }
         context.SaveChanges();
     }
 }
コード例 #6
0
        //This Method adds a Crew Member to a given Crew
        public void AddCrewMember(int crewId, int memberId)
        {
            using (var context = new MarigoldSystemContext())
            {
                CrewMember newCrewMember = new CrewMember();
                // Check if the new crew member is  already assigned in a different crew
                List <int> CrewMemberIDs = (context.CrewMembers
                                            .Where(x => DbFunctions.TruncateTime(x.Crew.CrewDate) == DbFunctions.TruncateTime(DateTime.Now))
                                            .Select(x => x.EmployeeID))
                                           .ToList();
                int count = context.Crews.Find(crewId).CrewMembers.Count();
                if (count == 5)
                {
                    throw new Exception("A crew cannot have more than five (5) crew members");
                }

                if (CrewMemberIDs != null)
                {
                    foreach (int id in CrewMemberIDs)
                    {
                        if (id == memberId)
                        {
                            string name = context.Employees
                                          .Where(x => x.EmployeeID == memberId)
                                          .Select(x => x.FirstName + " " + x.LastName)
                                          .FirstOrDefault();
                            throw new Exception(name + " is already assigned to a different crew");
                        }
                    }
                }
                //End check
                newCrewMember.EmployeeID = memberId;
                context.Crews.Find(crewId).CrewMembers.Add(newCrewMember);
                context.SaveChanges();
            }
        }
コード例 #7
0
        /// <summary>
        /// This method add a JobCard to a crew
        ///     It verifies the same site is not assigned twice to the same crew
        ///     It notifies the user when a Jobcard is assigned to more than one crew
        ///     It adds a Jobcard to a crew.
        /// </summary>
        /// <param name="crewId"></param>
        /// <param name="siteId"></param>
        /// <param name="taskId"></param>
        /// <returns></returns>
        public string AddJobCard(int crewId, int siteId, int taskId)
        {
            string message = "";

            using (var context = new MarigoldSystemContext())
            {
                DateTime today   = context.Crews.Find(crewId).CrewDate;
                JobCard  jobcard = context.JobCardCrews
                                   .Where(x => DbFunctions.TruncateTime(x.Crew.CrewDate) == DbFunctions.TruncateTime(DateTime.Now) && x.JobCard.SiteID == siteId)
                                   .Select(x => x.JobCard)
                                   .FirstOrDefault();

                if (jobcard != null && jobcard.ClosedDate != null)
                {
                    throw new Exception("The current job card was closed for the day. You can no longer assigned it today.");
                }
                else
                {
                    //Check How many times the curent site is done for the current season
                    if (taskId == 1)
                    {
                        //Determines how many times the cuurent site was worked on in the current season.
                        int cycle = context.Sites.Find(siteId).SiteType.NumberOfCyle;
                        int count = context.JobCards
                                    .Where(x => x.SiteID == siteId && ((DateTime)x.ClosedDate).Year == DateTime.Now.Year)
                                    .Select(x => x)
                                    .Count();

                        if (count >= cycle)
                        {
                            throw new Exception("The number of cycle (" + cycle + ") for this site has been reached for this season");
                        }
                    }

                    JobCardCrew jobCardCrew = context.JobCardCrews
                                              .Where(x => x.CrewID == crewId && x.JobCard.SiteID == siteId)
                                              .Select(x => x)
                                              .FirstOrDefault();
                    if (jobCardCrew != null)
                    {
                        //Check if the same site is not already assigned to the current crew
                        throw new Exception("This site is already assigned to the current Crew");
                    }
                    else
                    {
                        List <JobCardCrew> jobCardCrews = context.JobCardCrews
                                                          .Where(x => x.JobCard.SiteID == siteId && DbFunctions.TruncateTime(x.Crew.CrewDate) == DbFunctions.TruncateTime(DateTime.Today))
                                                          .Select(x => x)
                                                          .ToList();

                        //Notifies the users that existing crew(s) are also assigned to work on the same site.
                        if (jobCardCrews.Count > 0)
                        {
                            foreach (JobCardCrew job in jobCardCrews)
                            {
                                string unit = job.Crew.EquipmentID == null ? job.Crew.Truck.TruckDescription : job.Crew.Equipment.Description;
                                message += unit + ", ";
                            }
                            jobCardCrew           = new JobCardCrew();
                            jobCardCrew.CrewID    = crewId;
                            jobCardCrew.JobCardID = jobCardCrews[0].JobCardID;
                            context.JobCardCrews.Add(jobCardCrew);
                        }
                        else
                        {
                            JobCard jobCard = new JobCard();
                            jobCard.SiteID = siteId;
                            jobCard.TaskID = taskId;
                            context.JobCards.Add(jobCard);

                            jobCardCrew        = new JobCardCrew();
                            jobCardCrew.CrewID = crewId;

                            jobCard.JobCardCrews.Add(jobCardCrew);
                        };
                        context.SaveChanges();
                    }
                }

                return(message);
            }
        }
コード例 #8
0
        //This method Creates a Crew
        public void CreateCrew(int unitId, int driverId, string category)
        {
            using (var context = new MarigoldSystemContext())
            {
                // Check if the driver is already assigned in a different crew
                List <int> CrewMemberIDs = (context.CrewMembers
                                            .Where(x => DbFunctions.TruncateTime(x.Crew.CrewDate) == DbFunctions.TruncateTime(DateTime.Today))
                                            .Select(x => x.EmployeeID))
                                           .ToList();

                if (CrewMemberIDs != null)
                {
                    foreach (int id in CrewMemberIDs)
                    {
                        if (id == driverId)
                        {
                            string name = context.Employees
                                          .Where(x => x.EmployeeID == driverId)
                                          .Select(x => x.FirstName + " " + x.LastName)
                                          .FirstOrDefault();
                            throw new Exception(name + " is already assigned to a different crew");
                        }
                    }
                }
                //End check

                Crew crew = new Crew();
                switch (category)
                {
                case "Equipments":
                    crew = (context.Crews
                            .Where(x => x.EquipmentID == unitId && DbFunctions.TruncateTime(x.CrewDate) == DbFunctions.TruncateTime(DateTime.Today))
                            .Select(x => x))
                           .FirstOrDefault();
                    break;

                case "Trucks":
                    crew = (context.Crews
                            .Where(x => x.TruckID == unitId && DbFunctions.TruncateTime(x.CrewDate) == DbFunctions.TruncateTime(DateTime.Today))
                            .Select(x => x))
                           .FirstOrDefault();
                    break;
                }


                if (crew == null)
                {
                    //Create a new Crew
                    crew = new Crew();
                    if (category == "Equipments")
                    {
                        crew.EquipmentID = unitId;
                    }
                    else if (category == "Trucks")
                    {
                        crew.TruckID = unitId;
                    }
                    crew.CrewDate = DateTime.Today;
                    context.Crews.Add(crew);

                    //Add the dirver as the first Crew Member
                    CrewMember member = new CrewMember();
                    member.EmployeeID = driverId;
                    member.Driver     = true;
                    crew.CrewMembers.Add(member);
                }
                else
                {
                    throw new Exception("The selected Unit is already assigned to a different Crew");
                }
                context.SaveChanges();
            }
        }