Beispiel #1
0
        public DataTable SaveDataOnPmHeader(PMHeaderEntity item)
        {
            using (FacilitiesEntities db = new FacilitiesEntities())
            {
                try
                {
                    ClientPMHeader CH = new ClientPMHeader();
                    #region ADD/Update the PM header entries
                    if (item.ClientPMHeaderId != Guid.Empty)
                    {
                        CH = db.ClientPMHeaders.Where(a => a.ClientPMHeaderId == item.ClientPMHeaderId).FirstOrDefault();
                    }
                    else
                    {
                        CH.ClientPMHeaderId = Guid.NewGuid();
                    }

                    CH.Client             = item.Client;
                    CH.Customer           = item.Customer;
                    CH.ProblemClass       = item.ProblemClass;
                    CH.ProblemCode        = item.ProblemCode;
                    CH.RequestPriority    = item.RequestPriority;
                    CH.ServiceRequestType = item.ServiceRequestType;
                    CH.CustomerReference  = item.CustomerReference;
                    CH.IssueDescription   = item.IssueDescription;
                    CH.Frequency          = item.Frequency;
                    CH.BeginDate          = item.BeginDate;
                    CH.EndDate            = item.EndDate;
                    CH.ArriveDateAndTime  = item.ArriveDateAndTime;
                    CH.FinishDateAndTime  = item.FinishDateAndTime;
                    CH.WOInAdvance        = item.WOInAdvance;
                    CH.CreatedByUser      = item.UserId;
                    CH.ActiveFlag         = "N";

                    if (item.ClientPMHeaderId == Guid.Empty)
                    {
                        db.ClientPMHeaders.Add(CH);
                    }

                    db.SaveChanges();
                    #endregion


                    #region CALCULATE and insert the schedular entries and return
                    DataTable dt   = GetWOConfirmationDate(CH.ClientPMHeaderId);
                    DataView  view = dt.DefaultView;
                    view.Sort = "WorkOrderCreationDate ASC";
                    DataTable sortedDate = view.ToTable();
                    #endregion
                    return(dt);
                }
                catch (Exception ex)
                {
                    throw (ex);
                }
            }
        }
Beispiel #2
0
        public DataTable GetWOConfirmationDate(Guid clientPMHeaderID)
        {
            using (FacilitiesEntities db = new FacilitiesEntities())
            {
                try
                {
                    DataTable dt = new DataTable();

                    //1 Get Original Header Data
                    //ClientPMHeader item = db.ClientPMHeaders.Where(a => a.ClientPMHeaderId == clientPMHeaderID).FirstOrDefault();
                    ClientPMHeader ClientPMHeader = db.ClientPMHeaders.Where(a => a.ClientPMHeaderId == clientPMHeaderID).FirstOrDefault();
                    if (ClientPMHeader != null)
                    {
                        dt.Columns.Add("WorkOrderCreationDate", typeof(string));
                        dt.Columns.Add("WorkOrderArrivalDate", typeof(string));
                        dt.Columns.Add("FinishDateAndTime", typeof(string));

                        //2) Get the latest Arrvedate-Advance days value (Need to have this calculated everytime)
                        DateTime WorkOrderInitialArrivalDate = ClientPMHeader.ArriveDateAndTime.AddDays(-ClientPMHeader.WOInAdvance);

                        //3) Delete all those existing records having work order creation date greater than equal to current date
                        List <PMWorkOrderCreationDate> pMWorkOrderExistingRecords = (from pm in db.PMWorkOrderCreationDates
                                                                                     where pm.ClientPMHeader == ClientPMHeader.ClientPMHeaderId
                                                                                     select pm).ToList();
                        if (pMWorkOrderExistingRecords != null)
                        {
                            pMWorkOrderExistingRecords = pMWorkOrderExistingRecords.Where(a => Convert.ToDateTime(a.WorkOrderCreationDate) > DateTime.Now).ToList();
                            if (pMWorkOrderExistingRecords.Count > 0)
                            {
                                db.PMWorkOrderCreationDates.RemoveRange(pMWorkOrderExistingRecords);
                                db.SaveChanges();
                            }
                        }


                        //4) based on frequency, calculate new dates
                        int  countEntityAdded = 0;
                        bool ContinueAdding   = true;
                        UOWServiceRequest uOWServiceRequest = new UOWServiceRequest();
                        CGSInterval       cGSIntervals      = uOWServiceRequest.GetCGSInterval().Where(a => a.IntervalId == ClientPMHeader.Frequency).FirstOrDefault();

                        DataRow dr = dt.NewRow();
                        //initial start row
                        dr["WorkOrderCreationDate"] = WorkOrderInitialArrivalDate;
                        dr["WorkOrderArrivalDate"]  = ClientPMHeader.ArriveDateAndTime;
                        dr["FinishDateAndTime"]     = ClientPMHeader.FinishDateAndTime;
                        dt.Rows.Add(dr);

                        do
                        {
                            //calculate next arrival date from initial arrival date
                            DataRow drNext = dt.NewRow();

                            //rest of the calculation of rows
                            switch (cGSIntervals.IntervalName)
                            {
                            case "Monthly 30":
                                countEntityAdded += 1;
                                if (!(WorkOrderInitialArrivalDate.AddMonths(countEntityAdded) <= ClientPMHeader.EndDate))
                                {
                                    ContinueAdding = false;
                                    break;
                                }

                                drNext["WorkOrderCreationDate"] = WorkOrderInitialArrivalDate.AddMonths(countEntityAdded);
                                drNext["WorkOrderArrivalDate"]  = ClientPMHeader.ArriveDateAndTime.AddMonths(countEntityAdded);
                                drNext["FinishDateAndTime"]     = ClientPMHeader.FinishDateAndTime.AddMonths(countEntityAdded);
                                dt.Rows.Add(drNext);
                                break;

                            case "Bi-Monthly 60":
                                countEntityAdded += 2;
                                if (!(WorkOrderInitialArrivalDate.AddMonths(countEntityAdded) <= ClientPMHeader.EndDate))
                                {
                                    ContinueAdding = false;
                                    break;
                                }

                                drNext["WorkOrderCreationDate"] = WorkOrderInitialArrivalDate.AddMonths(countEntityAdded);
                                drNext["WorkOrderArrivalDate"]  = ClientPMHeader.ArriveDateAndTime.AddMonths(countEntityAdded);
                                drNext["FinishDateAndTime"]     = ClientPMHeader.FinishDateAndTime.AddMonths(countEntityAdded);
                                dt.Rows.Add(drNext);
                                break;

                            case "Quarterly 90":
                                countEntityAdded += 3;
                                if (!(WorkOrderInitialArrivalDate.AddMonths(countEntityAdded) <= ClientPMHeader.EndDate))
                                {
                                    ContinueAdding = false;
                                    break;
                                }

                                drNext["WorkOrderCreationDate"] = WorkOrderInitialArrivalDate.AddMonths(countEntityAdded);
                                drNext["WorkOrderArrivalDate"]  = ClientPMHeader.ArriveDateAndTime.AddMonths(countEntityAdded);
                                drNext["FinishDateAndTime"]     = ClientPMHeader.FinishDateAndTime.AddMonths(countEntityAdded);
                                dt.Rows.Add(drNext);
                                break;

                            case "Weekly 7":
                                countEntityAdded += 7;
                                if (!(WorkOrderInitialArrivalDate.AddDays(countEntityAdded) <= ClientPMHeader.EndDate))
                                {
                                    ContinueAdding = false;
                                    break;
                                }

                                drNext["WorkOrderCreationDate"] = WorkOrderInitialArrivalDate.AddDays(countEntityAdded);
                                drNext["WorkOrderArrivalDate"]  = ClientPMHeader.ArriveDateAndTime.AddDays(countEntityAdded);
                                drNext["FinishDateAndTime"]     = ClientPMHeader.FinishDateAndTime.AddDays(countEntityAdded);
                                dt.Rows.Add(drNext);
                                break;

                            case "Bi-Weekly 14":
                                countEntityAdded += 14;
                                if (!(WorkOrderInitialArrivalDate.AddDays(countEntityAdded) <= ClientPMHeader.EndDate))
                                {
                                    ContinueAdding = false;
                                    break;
                                }

                                drNext["WorkOrderCreationDate"] = WorkOrderInitialArrivalDate.AddDays(countEntityAdded);
                                drNext["WorkOrderArrivalDate"]  = ClientPMHeader.ArriveDateAndTime.AddDays(countEntityAdded);
                                drNext["FinishDateAndTime"]     = ClientPMHeader.FinishDateAndTime.AddDays(countEntityAdded);
                                dt.Rows.Add(drNext);
                                break;
                            }
                        } while (ContinueAdding);


                        ////3) Delete all those existing records having work order creation date greater than equal to current date
                        //List<PMWorkOrderCreationDate> pMWorkOrderExistingRecordsnew = (from pm in db.PMWorkOrderCreationDates
                        //                                                               where pm.ClientPMHeader == ClientPMHeader.ClientPMHeaderId
                        //                                                               select pm).ToList();
                        //if (pMWorkOrderExistingRecordsnew != null && pMWorkOrderExistingRecordsnew.Count > 0)
                        //{
                        //    db.PMWorkOrderCreationDates.RemoveRange(pMWorkOrderExistingRecordsnew);
                        //    db.SaveChanges();
                        //}


                        foreach (DataRow value in dt.Rows)
                        {
                            PMWorkOrderCreationDate PMWCD = new PMWorkOrderCreationDate();
                            if (Convert.ToDateTime(value["WorkOrderCreationDate"]) > DateTime.Now)
                            {
                                PMWCD.PMWorkOrderCreationDateId = Guid.NewGuid();
                                PMWCD.ClientPMHeader            = clientPMHeaderID;
                                PMWCD.WorkOrderCreationDate     = Convert.ToDateTime(value["WorkOrderCreationDate"]);
                                PMWCD.WorkOrderArriveDate       = Convert.ToDateTime(value["WorkOrderArrivalDate"]);
                                PMWCD.WorkOrderFinishDate       = Convert.ToDateTime(value["FinishDateAndTime"]);
                                db.PMWorkOrderCreationDates.Add(PMWCD);
                                db.SaveChanges();
                            }
                        }
                    }

                    return(dt);
                }
                catch (Exception ex)
                {
                    throw (ex);
                }
            }
        }