예제 #1
0
        public DTO.OrderEditFormData GetOrderData(int id, int clientId, string season, out Library.DTO.Notification notification)
        {
            notification = new Library.DTO.Notification()
            {
                Type = Library.DTO.NotificationType.Success
            };
            DTO.OrderEditFormData data = new DTO.OrderEditFormData();
            data.SupportList = new DTO.SupportData();
            data.SupportList.SamplePurposes       = new List <Support.DTO.SamplePurpose>();
            data.SupportList.SampleTransportTypes = new List <Support.DTO.SampleTransportType>();

            data.Data = new DTO.SampleOrderDTO();
            data.Data.SampleMonitorDTOs = new List <DTO.SampleMonitorDTO>();

            try
            {
                using (Sample3MngEntities context = CreateContext())
                {
                    if (id > 0)
                    {
                        data.Data = converter.DB2DTO_SampleOrder(context.Sample3Mng_SampleOrder_View.Include("Sample3Mng_SampleMonitor_View").FirstOrDefault(o => o.SampleOrderID == id));
                    }
                    else
                    {
                        var selectedClient = context.Sample3Mng_Client_View.FirstOrDefault(o => o.ClientID == clientId);
                        if (selectedClient == null)
                        {
                            throw new Exception("Client info is not valid!");
                        }
                        data.Data.ClientID            = clientId;
                        data.Data.ClientUD            = selectedClient.ClientUD;
                        data.Data.Season              = season;
                        data.Data.SampleOrderStatusID = 1;
                        data.Data.SampleOrderStatusNM = "PENDING";

                        int SampleMonitorIndex = 0;
                        // add default monitor person
                        foreach (Module.Support.DTO.NotificationMember nMember in supportFactory.GetNotificationMember("SampleVN_M"))
                        {
                            SampleMonitorIndex--;
                            data.Data.SampleMonitorDTOs.Add(new DTO.SampleMonitorDTO()
                            {
                                SampleMonitorID = SampleMonitorIndex, UserID = nMember.UserID, SampleMonitorGroupID = 1, FullName = nMember.EmployeeNM, InternalCompanyNM = nMember.InternalCompanyNM
                            });
                        }
                        foreach (Module.Support.DTO.NotificationMember nMember in supportFactory.GetNotificationMember("SampleNL_M"))
                        {
                            SampleMonitorIndex--;
                            data.Data.SampleMonitorDTOs.Add(new DTO.SampleMonitorDTO()
                            {
                                SampleMonitorID = SampleMonitorIndex, UserID = nMember.UserID, SampleMonitorGroupID = 2, FullName = nMember.EmployeeNM, InternalCompanyNM = nMember.InternalCompanyNM
                            });
                        }

                        // add monitor person base on the client
                        Sample3Mng_UserWithClient_View userClient = context.Sample3Mng_UserWithClient_View.FirstOrDefault(o => o.ClientID == clientId);
                        if (userClient != null)
                        {
                            if (userClient.SaleID.HasValue)
                            {
                                if (!data.Data.SampleMonitorDTOs.Select(o => o.UserID).ToArray().Contains(userClient.SaleID.Value))
                                {
                                    SampleMonitorIndex--;
                                    data.Data.SampleMonitorDTOs.Add(new DTO.SampleMonitorDTO()
                                    {
                                        SampleMonitorID = SampleMonitorIndex, UserID = userClient.SaleID.Value, SampleMonitorGroupID = 2, FullName = userClient.SaleNM, InternalCompanyNM = userClient.SaleCompNM
                                    });
                                }
                            }
                            if (userClient.Sale2ID.HasValue)
                            {
                                if (!data.Data.SampleMonitorDTOs.Select(o => o.UserID).ToArray().Contains(userClient.Sale2ID.Value))
                                {
                                    SampleMonitorIndex--;
                                    data.Data.SampleMonitorDTOs.Add(new DTO.SampleMonitorDTO()
                                    {
                                        SampleMonitorID = SampleMonitorIndex, UserID = userClient.Sale2ID.Value, SampleMonitorGroupID = 2, FullName = userClient.Sale2NM, InternalCompanyNM = userClient.SaleComp2NM
                                    });
                                }
                            }
                            if (userClient.SaleVNID.HasValue)
                            {
                                if (!data.Data.SampleMonitorDTOs.Select(o => o.UserID).ToArray().Contains(userClient.SaleVNID.Value))
                                {
                                    SampleMonitorIndex--;
                                    data.Data.SampleMonitorDTOs.Add(new DTO.SampleMonitorDTO()
                                    {
                                        SampleMonitorID = SampleMonitorIndex, UserID = userClient.SaleVNID.Value, SampleMonitorGroupID = 1, FullName = userClient.SaleVNNM, InternalCompanyNM = userClient.SaleCompVNNM
                                    });
                                }
                            }
                        }
                    }
                }

                data.SupportList.SamplePurposes       = supportFactory.GetSamplePurpose().ToList();
                data.SupportList.SampleTransportTypes = supportFactory.GetSampleTransportType().ToList();
            }
            catch (Exception ex)
            {
                notification.Type    = Library.DTO.NotificationType.Error;
                notification.Message = ex.Message;
            }

            return(data);
        }