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); }