コード例 #1
0
        private void Copy(project_task source, TicketPart destination, TicketContext context)
        {
            destination.Record.Title       = source.name;
            destination.Record.Description = source.description;

            // priority
            if (!string.IsNullOrEmpty(source.priority))
            {
                var priority = context.Priorities.FirstOrDefault(c => c.Name.ToLower().Trim() == source.priority.ToLower().Trim());
                if (priority != null)
                {
                    destination.PriorityRecord = new PriorityRecord {
                        Id = priority.Id
                    };
                }
            }

            // status
            if (!string.IsNullOrEmpty(source.status))
            {
                var status = context.StatusList.FirstOrDefault(c => c.Name.ToLower().Trim() == source.status.ToLower().Trim());
                if (status != null)
                {
                    destination.StatusRecord = new StatusRecord {
                        Id = status.Id
                    };
                }
            }
        }
コード例 #2
0
        public void add_item(production_order_detail production_order_detail)
        {
            production_order_detail.quantity   = production_order_detailList.FirstOrDefault().quantity;
            production_order_detail.id_item    = production_order_detailList.FirstOrDefault().id_item;
            production_order_detail.item       = production_order_detailList.FirstOrDefault().item;
            production_order_detail.parent     = production_order_detailList.FirstOrDefault().parent;
            production_order_detail.IsSelected = true;
            production_order_detail.State      = EntityState.Added;

            production_order_detailList.FirstOrDefault().production_order.production_order_detail.Add(production_order_detail);
            if (production_order_detail.id_project_task > 0)
            {
                if (OrderDB.project_task.Where(x => x.id_project_task == production_order_detail.id_project_task).FirstOrDefault() != null)
                {
                    project_task project_task = OrderDB.project_task.Where(x => x.id_project_task == production_order_detail.id_project_task).FirstOrDefault();
                    if (OrderDB.project_task_dimension.Where(x => x.id_project_task == project_task.id_project_task).ToList() != null)
                    {
                        List <project_task_dimension> project_task_dimensionList = OrderDB.project_task_dimension.Where(x => x.id_project_task == project_task.id_project_task).ToList();
                        foreach (project_task_dimension project_task_dimension in project_task_dimensionList)
                        {
                            production_order_dimension production_order_dimension = new production_order_dimension();
                            production_order_dimension.id_dimension = project_task_dimension.id_dimension;
                            production_order_dimension.value        = project_task_dimension.value;
                            production_order_detail.production_order_dimension.Add(production_order_dimension);
                        }
                    }
                }
            }
        }
コード例 #3
0
        private void project_task_dimensionDataGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
        {
            project_task           project_task           = (project_task)treeProject.SelectedItem_;
            project_task_dimension project_task_dimension = e.Row.Item as project_task_dimension;

            project_task.project_task_dimension.Add(project_task_dimension);
        }
コード例 #4
0
 public void filter_task()
 {
     try
     {
         if (project_taskViewSource != null)
         {
             if (project_taskViewSource.View != null)
             {
                 project_taskViewSource.View.Filter = i =>
                 {
                     project_task _project_task = (project_task)i;
                     if (_project_task.parent == null && _project_task.is_active == true)
                     {
                         return(true);
                     }
                     else
                     {
                         return(false);
                     }
                 };
             }
         }
     }
     catch { }
 }
コード例 #5
0
 private void treeProject_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
 {
     if (treeProject.SelectedItem_ != null)
     {
         project_task project_task = (project_task)treeProject.SelectedItem_;
         project_taskViewSource.View.MoveCurrentTo(project_task);
         try
         {
             if (project_task_dimensionViewSource != null)
             {
                 if (project_task_dimensionViewSource.View != null)
                 {
                     project_task_dimensionViewSource.View.Filter = i =>
                     {
                         project_task_dimension _project_task_dimension = (project_task_dimension)i;
                         if (_project_task_dimension.id_project_task == project_task.id_project_task)
                         {
                             return(true);
                         }
                         else
                         {
                             return(false);
                         }
                     };
                 }
             }
         }
         catch (Exception ex)
         {
             toolBar.msgError(ex);
         }
     }
 }
コード例 #6
0
 public void filter_task()
 {
     try
     {
         if (project_taskViewSource != null)
         {
             if (project_taskViewSource.View != null)
             {
                 project_taskViewSource.View.Filter = i =>
                 {
                     project_task _project_task = (project_task)i;
                     if (_project_task.parent == null && _project_task.is_active == true && _project_task.status != Status.Project.Rejected)
                     {
                         return(true);
                     }
                     else
                     {
                         return(false);
                     }
                 };
             }
         }
     }
     catch (Exception ex)
     {
         toolBar.msgError(ex);
     }
 }
コード例 #7
0
        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            using (db db = new db())
            {
                cbxDocument.ItemsSource = entity.Brillo.Logic.Range.List_Range(db, entity.App.Names.ActivityPlan, CurrentSession.Id_Branch, CurrentSession.Id_Terminal);

                project_task project_task = db.project_task.FirstOrDefault();

                project_task.id_range = id_range;
                number = project_task.NumberWatermark;
                RaisePropertyChanged("number");
            }
        }
コード例 #8
0
        private void cbxproperty_SelectionChanged(object sender, EventArgs e)
        {
            if (cbxproperty.SelectedItem != null)
            {
                project_task project_task_output = treeProject.SelectedItem_ as project_task;

                if (project_task_output != null)
                {
                    project_task_output.item_description = project_task_output.item_description + " || POS: '" + cbxproperty.Text + "'";
                    project_task_output.RaisePropertyChanged("item_description");
                }
            }
        }
コード例 #9
0
 private void cbxDocument_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     using (db db = new db())
     {
         if (id_range != null)
         {
             project_task project_task = db.project_task.FirstOrDefault();
             project_task.State    = System.Data.Entity.EntityState.Modified;
             project_task.id_range = (int)cbxDocument.SelectedValue;
             number = project_task.NumberWatermark;
             RaisePropertyChanged("number");
         }
     }
 }
コード例 #10
0
        private void btnEditTask_Click(object sender)
        {
            stpcode.IsEnabled = true;
            project_task project_task = treeProject.SelectedItem_ as project_task;

            if (project_task != null)
            {
                project_task.State = EntityState.Modified;
            }
            else
            {
                toolBar.msgWarning("Select Task");
            }
        }
コード例 #11
0
        private async void btnSave_Click(object sender, RoutedEventArgs e)
        {
            entity.project _project = ((entity.project)projectViewSource.View.CurrentItem);
            int            id_type  = 0;

            if (_project.id_project_template != null)
            {
                id_type = (int)_project.id_project_template;
            }

            await db.project_template_detail.Where(x => x.id_project_template == id_type).ToListAsync();

            List <project_template_detail> project_template_detail = db.project_template_detail.Local.ToList();

            if (project_template_detail != null)
            {
                foreach (project_template_detail item in project_template_detail)
                {
                    project_task project_task = new project_task();
                    project_task.id_project_task = item.id_template_detail;
                    project_task.items           = item.item;
                    if (item.item_description != null)
                    {
                        project_task.item_description = item.item_description;
                    }
                    else
                    {
                        project_task.item_description = "Generic Task - Please Replace";
                    }

                    project_task.code    = item.code;
                    project_task.id_item = item.id_item;
                    project_task.status  = Status.Project.Pending;

                    if (item.parent != null)
                    {
                        project_task _project_task = db.project_task.Local.Where(x => x.id_project_task == item.parent.id_template_detail).FirstOrDefault();
                        _project_task.child.Add(project_task);
                    }

                    _project.project_task.Add(project_task);
                    // }
                }
            }

            db.SaveChanges();
            btnCancel_Click(sender, e);
        }
コード例 #12
0
ファイル: pnlOrder.xaml.cs プロジェクト: mercaditu/ERP
        private void lblCancel_MouseDown(object sender, MouseButtonEventArgs e)
        {
            production_order production_order = (production_order)production_orderViewSource.View.CurrentItem;

            shared_dbContext.db.production_order.Remove(production_order);

            foreach (var item in project_taskLIST)
            {
                project_task _project_task = (project_task)item;
                _project_task.IsSelected = false;
            }

            projectViewSource.View.Refresh();

            Grid parentGrid = (Grid)this.Parent;

            parentGrid.Children.Clear();
            parentGrid.Visibility = Visibility.Hidden;
        }
コード例 #13
0
        private void btnNewTask_Click(object sender)
        {
            stpcode.IsEnabled = true;

            project      project      = projectViewSource.View.CurrentItem as project;
            project_task project_task = treeProject.SelectedItem_ as project_task;

            if (project_task != null && project_task.items.item_recepie.Count() == 0)
            {
                //Adding a Child Item.
                if (project_task.items != null)
                {
                    if (project_task.items.id_item_type == entity.item.item_type.Task)
                    {
                        project_task n_project_task = new project_task();
                        n_project_task.id_project   = project.id_project;
                        n_project_task.status       = entity.Status.Project.Pending;
                        n_project_task.quantity_est = 0;
                        n_project_task.parent       = project_task;
                        n_project_task.State        = EntityState.Added;
                        project_task.child.Add(n_project_task);
                        ProjectTaskDB.project_task.Add(n_project_task);
                        project_taskViewSource.View.Refresh();
                        project_taskViewSource.View.MoveCurrentTo(n_project_task);

                        treeProject.SelectedItem_ = n_project_task;
                    }
                }
            }
            else
            {
                project_task n_project_task = new project_task();
                n_project_task.id_project = project.id_project;
                n_project_task.status     = entity.Status.Project.Pending;
                n_project_task.State      = EntityState.Added;
                ProjectTaskDB.project_task.Add(n_project_task);

                project_taskViewSource.View.Filter = null;
                project_taskViewSource.View.MoveCurrentTo(n_project_task);
                treeProject.SelectedItem_ = n_project_task;
                filter_task();
            }
        }
コード例 #14
0
ファイル: Logistics.xaml.cs プロジェクト: mercaditu/ERP
        private void itemDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (((TabItem)TabLogistics.SelectedItem).Name == "tabproduct" || ((TabItem)TabLogistics.SelectedItem).Name == "tabraw")
            {
                itemDataGrid.RowDetailsVisibilityMode = DataGridRowDetailsVisibilityMode.VisibleWhenSelected;
            }
            else
            {
                itemDataGrid.RowDetailsVisibilityMode = DataGridRowDetailsVisibilityMode.Collapsed;
            }

            project_taskViewSource = ((CollectionViewSource)(this.FindResource("project_taskViewSource")));

            if (project_task != project_taskViewSource.View.CurrentItem as project_task)
            {
                project_task = project_taskViewSource.View.CurrentItem as project_task;
                CollectionViewSource project_task_dimensionViewSource = ((CollectionViewSource)(FindResource("project_task_dimensionViewSource")));

                project_task_dimensionViewSource.Source = ProjectTaskDB.project_task_dimension.Where(a => a.id_company == CurrentSession.Id_Company && a.id_project_task == project_task.id_project_task).ToList();
            }
        }
コード例 #15
0
ファイル: pnlOrder.xaml.cs プロジェクト: mercaditu/ERP
 public void filter_task()
 {
     if (projectViewSource != null)
     {
         if (projectViewSource.View != null)
         {
             projectViewSource.View.Filter = i =>
             {
                 project_task _project_task = (project_task)i;
                 if (_project_task.parent == null)
                 {
                     return(true);
                 }
                 else
                 {
                     return(false);
                 }
             };
         }
     }
 }
コード例 #16
0
        private void btnAddParentTask_Click(object sender)
        {
            stpcode.IsEnabled = true;
            project project = projectViewSource.View.CurrentItem as project;

            if (project != null)
            {
                project_task n_project_task = new project_task();
                n_project_task.id_project = project.id_project;
                n_project_task.status     = entity.Status.Project.Pending;
                n_project_task.State      = EntityState.Added;
                ProjectTaskDB.project_task.Add(n_project_task);

                project_taskViewSource.View.Filter = null;
                project_taskViewSource.View.MoveCurrentTo(n_project_task);
                treeProject.SelectedItem_ = n_project_task;
            }
            else
            {
                toolBar.msgWarning("Select Project");
            }

            filter_task();
        }
コード例 #17
0
ファイル: pnlOrder.xaml.cs プロジェクト: mercaditu/ERP
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            foreach (var item in project_taskLIST)
            {
                project_task _project_task = (project_task)item;

                if (_project_task.status == entity.Status.Project.Approved)
                {
                    _project_task.status     = entity.Status.Project.InProcess;
                    _project_task.IsSelected = false;
                }
            }

            IEnumerable <DbEntityValidationResult> validationresult = _dbContext.db.GetValidationErrors();

            if (validationresult.Count() == 0)
            {
                shared_dbContext.SaveChanges();
                Grid parentGrid = (Grid)this.Parent;
                parentGrid.Children.Clear();
                parentGrid.Visibility = Visibility.Hidden;
            }
            filter_task();
        }
コード例 #18
0
ファイル: pnlOrder.xaml.cs プロジェクト: mercaditu/ERP
        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            production_order production_order = new production_order();

            // Do not load your data at design time.
            if (!DesignerProperties.GetIsInDesignMode(this))
            {
                //Load your data here and assign the result to the CollectionViewSource.
                production_orderViewSource = (CollectionViewSource)this.Resources["production_orderViewSource"];

                shared_dbContext.db.production_order.Add(production_order);

                production_orderViewSource.Source = shared_dbContext.db.production_order.Local;

                production_lineViewSource = (CollectionViewSource)this.Resources["production_lineViewSource"];
                shared_dbContext.db.production_line.Load();
                production_lineViewSource.Source = shared_dbContext.db.production_line.Local;
            }


            if (project_taskLIST.Count() > 0)
            {
                production_order.id_project = project_taskLIST.FirstOrDefault().id_project;

                //Get Name.
                production_order.name = project_taskLIST.FirstOrDefault().project.name;
                production_order.RaisePropertyChanged("name");

                //Date check. Get the range from task first, if blank get from Project.
                production_order.start_date_est = project_taskLIST.OrderBy(x => x.start_date_est).FirstOrDefault().start_date_est;
                production_order.end_date_est   = project_taskLIST.OrderByDescending(x => x.end_date_est).FirstOrDefault().end_date_est;

                if (production_order.start_date_est == null || production_order.end_date_est == null)
                {
                    production_order.start_date_est = project_taskLIST.OrderBy(x => x.start_date_est).FirstOrDefault().project.est_start_date;
                    production_order.end_date_est   = project_taskLIST.OrderByDescending(x => x.end_date_est).FirstOrDefault().project.est_end_date;
                }

                production_order.RaisePropertyChanged("start_date_est");
                production_order.RaisePropertyChanged("end_date_est");

                foreach (var item in project_taskLIST.Where(x => x.status == Status.Project.Approved))
                {
                    project_task            _project_task           = (project_task)item;
                    production_order_detail production_order_detail = new production_order_detail();
                    production_order_detail.status          = Status.Production.Pending;
                    production_order_detail.id_order_detail = _project_task.id_project_task;
                    production_order_detail.name            = _project_task.item_description;
                    production_order_detail.code            = _project_task.code;
                    //Ref Keys
                    production_order_detail.item    = _project_task.items;
                    production_order_detail.id_item = _project_task.id_item;

                    //If Item has Recepie
                    if (_project_task.items.item_recepie.Count > 0)
                    {
                        production_order_detail.is_input = false;
                    }
                    else
                    {
                        production_order_detail.is_input = true;
                    }

                    if (_project_task.parent != null)
                    {
                        production_order_detail _production_order_detail = production_order.production_order_detail.Where(x => x.id_project_task == _project_task.parent.id_project_task).FirstOrDefault();
                        if (_production_order_detail != null)
                        {
                            production_order_detail.parent = _production_order_detail;
                        }
                    }

                    production_order_detail.id_project_task = _project_task.id_project_task;
                    if (_project_task.quantity_est > 0)
                    {
                        production_order_detail.quantity = (decimal)_project_task.quantity_est;
                    }

                    production_order.status = entity.Status.Production.Pending;
                    production_order.production_order_detail.Add(production_order_detail);
                }

                shared_dbContext.db.production_order.Add(production_order);
                production_orderViewSource.View.MoveCurrentToLast();
            }
        }
コード例 #19
0
        private void item_Select(object sender, RoutedEventArgs e)
        {
            if (sbxItem.ItemID > 0)
            {
                item item = ProjectTaskDB.items.Where(x => x.id_item == sbxItem.ItemID).FirstOrDefault();


                project_task project_task_output = treeProject.SelectedItem_ as project_task;
                if (project_task_output.parent != null)
                {
                    if (project_task_output.parent.items.is_autorecepie)
                    {
                        MessageBox.Show("can't add becuse item is auto receipe");
                    }
                }

                if (item != null && item.id_item > 0 && item.is_autorecepie)
                {
                    project_task_output.id_item = item.id_item;
                    project_task_output.items   = item;
                    project_task_output.RaisePropertyChanged("item");
                    project_task_output.quantity_est = 1;
                    foreach (item_recepie_detail item_recepie_detail in item.item_recepie.FirstOrDefault().item_recepie_detail)
                    {
                        project_task project_task = new project_task();

                        project_task.code             = item_recepie_detail.item.name;
                        project_task.item_description = item_recepie_detail.item.name;
                        project_task.id_item          = item_recepie_detail.item.id_item;
                        project_task.items            = item_recepie_detail.item;
                        project_task.id_project       = project_task_output.id_project;
                        project_task.status           = Status.Project.Pending;
                        project_task.RaisePropertyChanged("item");
                        if (item_recepie_detail.quantity > 0)
                        {
                            project_task.quantity_est = (decimal)item_recepie_detail.quantity;
                        }
                        project_task_output.child.Add(project_task);
                    }
                    filter_task();
                }
                else
                {
                    if (project_task_output.code == "")
                    {
                        project_task_output.code = item.code;
                    }
                    project_task_output.id_item          = item.id_item;
                    project_task_output.items            = item;
                    project_task_output.item_description = item.name;
                    project_task_output.RaisePropertyChanged("item_description");
                    project_task_output.RaisePropertyChanged("item");
                    project_task_output.quantity_est = 1;
                }

                if (item.item_dimension != null)
                {
                    project_task_output.items = item;
                    project_task_output.project_task_dimension.Clear();
                    foreach (item_dimension _item_dimension in item.item_dimension)
                    {
                        project_task_dimension project_task_dimension = new project_task_dimension();
                        project_task_dimension.id_dimension    = _item_dimension.id_app_dimension;
                        project_task_dimension.app_dimension   = _item_dimension.app_dimension;
                        project_task_dimension.value           = _item_dimension.value;
                        project_task_dimension.id_measurement  = _item_dimension.id_measurement;
                        project_task_dimension.app_measurement = _item_dimension.app_measurement;
                        project_task_dimension.id_project_task = project_task_output.id_project_task;
                        project_task_dimension.project_task    = project_task_output;
                        ProjectTaskDB.project_task_dimension.Add(project_task_dimension);
                        project_task_dimensionViewSource.View.MoveCurrentToLast();
                    }
                }
                try
                {
                    if (project_task_dimensionViewSource != null)
                    {
                        if (project_task_dimensionViewSource.View != null)
                        {
                            project_task_dimensionViewSource.View.Filter = i =>
                            {
                                project_task_dimension _project_task_dimension = (project_task_dimension)i;
                                if (_project_task_dimension.project_task == project_task_output)
                                {
                                    return(true);
                                }
                                else
                                {
                                    return(false);
                                }
                            };
                        }
                    }
                }
                catch (Exception ex)
                {
                    toolBar.msgError(ex);
                }
            }
        }
コード例 #20
0
        public IEnumerable <SuiteCRMTaskDetailViewModel> CopyOrchardTicketsToSuite(CopyOrchardTasksToSuiteViewModel model)
        {
            List <SuiteCRMTaskDetailViewModel> returnValue = new List <SuiteCRMTaskDetailViewModel>();

            using (var connection = Helper.GetConnection(this.services, this.Logger))
                using (SuiteCRMTaskUnitOfWork taskRepository = new SuiteCRMTaskUnitOfWork(connection))
                    using (SuiteCRMEmailAddressBeanUnitOfWork suiteCRMEmailAddressBeanUnitOfWork = new SuiteCRMEmailAddressBeanUnitOfWork(taskRepository))
                        using (SuiteCRMEmailAddressUnitOfWork suiteCRMEmailAddressUnitOfWork = new SuiteCRMEmailAddressUnitOfWork(taskRepository))
                            using (SuiteCRMProjectTaskUnitOfWork projectTasksRepository = new SuiteCRMProjectTaskUnitOfWork(taskRepository))
                                using (var suiteCRMTransaction = taskRepository.BeginTransaction())
                                {
                                    TicketContext context = new TicketContext();
                                    context.ProjectTaskUnitOfWork = projectTasksRepository;
                                    context.Priorities            = this.priorityRepository.Table.ToList();
                                    context.StatusList            = this.statusRepository.Table.ToList();

                                    try
                                    {
                                        var taskIds           = model.Tasks.Where(c => !string.IsNullOrEmpty(c.SuiteCRMId)).Select(c => c.SuiteCRMId).ToArray();
                                        var suiteTasks        = taskRepository.GetTasks(taskIds);
                                        var suiteProjectTasks = projectTasksRepository.GetTasks(taskIds);
                                        var orchardTickets    = this.services
                                                                .ContentManager
                                                                .GetMany <SuiteCRMTaskPart>(
                                            model.Tasks.Where(c => c.OrchardCollaborationTicketId.HasValue).Select(c => c.OrchardCollaborationTicketId.Value),
                                            VersionOptions.Published,
                                            new QueryHints().ExpandParts <TicketPart>());

                                        foreach (var item in model.Tasks)
                                        {
                                            if (item.OrchardCollaborationTicketId == null)
                                            {
                                                continue;
                                            }

                                            var ticket = orchardTickets.FirstOrDefault(c => c.Id == item.OrchardCollaborationTicketId.Value);

                                            var        suiteCRMTaskPart = ticket.As <SuiteCRMTaskPart>();
                                            TicketPart ticketPart       = ticket.As <TicketPart>();
                                            ContentItemPermissionPart permissionPart      = ticket.As <ContentItemPermissionPart>();
                                            AttachToProjectPart       attachToProjectPart = ticket.As <AttachToProjectPart>();
                                            SuiteCRMProjectPart       projectPart         = null;

                                            if (!this.IsSyncingTicketValid(item, ticket, out projectPart))
                                            {
                                                continue;
                                            }

                                            project_task suiteCRMProjectTask = null;
                                            task         suiteCRMTask        = null;

                                            if (!string.IsNullOrEmpty(suiteCRMTaskPart.ExternalId) && item.IsProjectTask)
                                            {
                                                suiteCRMProjectTask = suiteProjectTasks.FirstOrDefault(c => c.id == suiteCRMTaskPart.ExternalId);
                                            }

                                            if (!string.IsNullOrEmpty(suiteCRMTaskPart.ExternalId) && !item.IsProjectTask)
                                            {
                                                suiteCRMTask = suiteTasks.FirstOrDefault(c => c.id == suiteCRMTaskPart.ExternalId);
                                            }

                                            if (suiteCRMProjectTask == null && item.IsProjectTask)
                                            {
                                                suiteCRMProjectTask            = new project_task();
                                                suiteCRMProjectTask.project_id = item.SuiteCRMId;
                                                projectTasksRepository.Add(suiteCRMProjectTask);
                                            }

                                            if (suiteCRMTask == null && !item.IsProjectTask)
                                            {
                                                suiteCRMTask = new task();
                                                taskRepository.Add(suiteCRMTask);
                                            }

                                            CommonPart commonPart = ticketPart.As <CommonPart>();
                                            DateTime?  lastOrchardTicketChangeDate = commonPart.ModifiedUtc ?? commonPart.CreatedUtc;
                                            if (suiteCRMProjectTask != null &&
                                                (
                                                    !item.DoNotOverrideNewerValues ||
                                                    suiteCRMProjectTask.date_modified == null ||
                                                    (lastOrchardTicketChangeDate.HasValue &&
                                                     suiteCRMProjectTask.date_modified.Value <= lastOrchardTicketChangeDate.Value)
                                                ))
                                            {
                                                this.Copy(ticketPart, permissionPart, suiteCRMProjectTask, context);
                                                suiteCRMProjectTask.project_id = projectPart.ExternalId;
                                                projectTasksRepository.Save();
                                            }

                                            if (suiteCRMTask != null &&
                                                (
                                                    !item.DoNotOverrideNewerValues ||
                                                    suiteCRMTask.date_modified == null ||
                                                    (lastOrchardTicketChangeDate.HasValue &&
                                                     suiteCRMTask.date_modified.Value <= lastOrchardTicketChangeDate.Value)
                                                ))
                                            {
                                                this.Copy(ticketPart, permissionPart, suiteCRMTask, context);

                                                // set  contact
                                                if (string.IsNullOrEmpty(suiteCRMTask.created_by) && commonPart.Owner != null)
                                                {
                                                    var emailAddress = suiteCRMEmailAddressUnitOfWork.GetByEmail(commonPart.Owner.Email);
                                                    if (emailAddress != null)
                                                    {
                                                        var contact = suiteCRMEmailAddressBeanUnitOfWork.GetBeanIdOfEmailAddress(Helper.ContactsModuleName, new[] { emailAddress.id }).FirstOrDefault();

                                                        if (contact != null)
                                                        {
                                                            suiteCRMTask.parent_id   = contact.id;
                                                            suiteCRMTask.parent_type = Helper.ContactsModuleName;
                                                        }
                                                    }
                                                }

                                                projectTasksRepository.Save();
                                            }

                                            suiteCRMTaskPart.ExternalId   = item.IsProjectTask ? suiteCRMProjectTask.id : suiteCRMTask.id;
                                            suiteCRMTaskPart.LastSyncTime = DateTime.UtcNow;
                                            suiteCRMTaskPart.TaskType     = item.IsProjectTask ? SuiteCRMTaskPart.SuiteCRMProjectTaskTypeValue : SuiteCRMTaskPart.SuiteCRMTaskTypeValue;
                                            this.services.ContentManager.Publish(ticket.ContentItem);

                                            SuiteCRMTaskDetailViewModel returnValueItem = new SuiteCRMTaskDetailViewModel();
                                            returnValueItem.OrchardCollaborationTicket = ticket.ContentItem;
                                            returnValueItem.IsSync         = true;
                                            returnValueItem.IsProjectTask  = item.IsProjectTask;
                                            returnValueItem.LastSyncTime   = suiteCRMTaskPart.LastSyncTime;
                                            returnValueItem.SuiteCRMTaskId = suiteCRMTaskPart.ExternalId;
                                            returnValue.Add(returnValueItem);
                                        }

                                        suiteCRMTransaction.Commit();
                                    }
                                    catch (Exception ex)
                                    {
                                        suiteCRMTransaction.Rollback();
                                        throw ex;
                                    }
                                }

            return(returnValue);
        }
コード例 #21
0
ファイル: Logistics.xaml.cs プロジェクト: mercaditu/ERP
        public void LoadData()
        {
            try
            {
                LogisticsList.Clear();
                LogisticsListService.Clear();
                if (projectViewSource != null)
                {
                    item_ProductDataGrid.ItemsSource = null;
                    item_RawDataGrid.ItemsSource     = null;
                    item_ServiceDataGrid.ItemsSource = null;
                    item_CapitalDataGrid.ItemsSource = null;
                    dgvSupplies.ItemsSource          = null;

                    int _id_project = 0;
                    if (projectViewSource.View.CurrentItem != null)
                    {
                        _id_project = ((project)projectViewSource.View.CurrentItem).id_project;
                    }

                    if (_id_project > 0)
                    {
                        var productlistbasic = (from IT in ProjectTaskDB.project_task
                                                where (IT.status == Status.Project.Approved || IT.status == Status.Project.InProcess) &&
                                                IT.status != null && IT.id_project == _id_project
                                                join IK in ProjectTaskDB.item_product on IT.id_item equals IK.id_item
                                                //join PTD in ProjectTaskDB.purchase_tender_detail on IT.id_project_task equals PTD.purchase_tender_item.id_project_task into a
                                                //from IM in a.DefaultIfEmpty()
                                                group IT by new { IT.items }
                                                into last
                                                select new
                        {
                            _id_item = last.Key.items.id_item != 0 ? last.Key.items.id_item : 0,
                            _code = last.Key.items != null ? last.Key.items.code : "",
                            _name = last.Key.items != null ? last.Key.items.name : "",
                            _id_task = last.Max(x => x.id_project_task),
                            _ordered_quantity = last.Sum(x => x.quantity_est) != 0 ? last.Sum(x => x.quantity_est) : 0,
                            //avlqtyColumn = last.Key.IM.quantity,
                            //buyqty = (last.Sum(x => x.quantity_est) != 0 ? last.Sum(x => x.quantity_est) : 0) - (last.Key.IM.quantity != 0 ? last.Key.IM.quantity : 0),
                            item = last.Key.items
                        }).ToList();



                        var productlist = (from PL in productlistbasic
                                           group PL by new { PL.item }
                                           into last
                                           select new
                        {
                            _id_item = last.Key.item.id_item != 0 ? last.Key.item.id_item : 0,
                            _code = last.Key.item != null ? last.Key.item.code : "",
                            _name = last.Key.item != null ? last.Key.item.name : "",
                            _id_task = last.Max(x => x._id_task),
                            _ordered_quantity = last.Max(x => x._ordered_quantity),
                            //avlqtyColumn = last.Sum(x => x.avlqtyColumn),
                            //buyqty = last.Sum(x => x.avlqtyColumn) < last.Max(x => x._ordered_quantity) ? (last.Max(x => x._ordered_quantity) != 0 ? last.Max(x => x._ordered_quantity) : 0) - (last.Sum(x => x.avlqtyColumn) != 0 ? last.Sum(x => x.avlqtyColumn) : 0) : 0,
                            item = last.Key.item
                        }).ToList();

                        foreach (dynamic item in productlist)
                        {
                            int      id_task   = (int)item._id_task;
                            Logistic Logistics = new Logistic();
                            if (ProjectTaskDB.project_task.Where(x => x.id_project_task == id_task).FirstOrDefault() != null)
                            {
                                project_task project_task = ProjectTaskDB.project_task.Where(x => x.id_project_task == id_task).FirstOrDefault();
                                Logistics.avlqtyColumn = project_task.purchase_tender_item.Sum(x => x.quantity);
                                Logistics.buyqty       = (decimal)item._ordered_quantity - (decimal)project_task.purchase_tender_item.Sum(x => x.quantity);
                            }


                            Logistics._id_item          = item._id_item;
                            Logistics._code             = item._code;
                            Logistics._name             = item._name;
                            Logistics._id_task          = item._id_task;
                            Logistics._ordered_quantity = item._ordered_quantity;
                            Logistics.item = item.item;
                            LogisticsList.Add(Logistics);
                        }

                        item_ProductDataGrid.ItemsSource = LogisticsList.Where(IT => IT.item.id_item_type == item.item_type.Product).ToList();

                        item_RawDataGrid.ItemsSource = LogisticsList.Where(IT => IT.item.id_item_type == item.item_type.RawMaterial).ToList();
                        var servicelist = (from IT in ProjectTaskDB.project_task
                                           where IT.status == Status.Project.Approved &&
                                           IT.status != null && IT.id_project == _id_project

                                           group IT by new { IT.items } into last
                                           select new
                        {
                            _id_item = last.Key.items.id_item != 0 ? last.Key.items.id_item : 0,
                            _code = last.Key.items != null ? last.Key.items.code : "",
                            _name = last.Key.items != null ? last.Key.items.name : "",
                            _id_task = last.Max(x => x.id_project_task),
                            _ordered_quantity = last.Sum(x => x.quantity_est) != 0 ? last.Sum(x => x.quantity_est) : 0,
                            item = last.Key.items
                        }).ToList();

                        foreach (dynamic item in servicelist)
                        {
                            Logistic Logistics = new Logistic();
                            Logistics._id_item = item._id_item;
                            Logistics._code    = item._code;
                            Logistics._name    = item._name;
                            Logistics._id_task = item._id_task;
                            if (item._ordered_quantity == null)
                            {
                                Logistics._ordered_quantity = 0;
                            }
                            else
                            {
                                Logistics._ordered_quantity = item._ordered_quantity;
                            }

                            Logistics.item = item.item;
                            LogisticsListService.Add(Logistics);
                        }
                        item_ServiceDataGrid.ItemsSource = LogisticsListService.Where(IT => IT.item.id_item_type == item.item_type.Service).ToList();
                        item_CapitalDataGrid.ItemsSource = LogisticsListService.Where(IT => IT.item.id_item_type == item.item_type.FixedAssets).ToList();
                        dgvServiceContract.ItemsSource   = LogisticsListService.Where(IT => IT.item.id_item_type == item.item_type.ServiceContract).ToList();

                        dgvSupplies.ItemsSource = LogisticsListService.Where(IT => IT.item.id_item_type == item.item_type.Supplies).ToList();;
                    }
                }

                //Clears out values until Logistic is selected.
                project_taskViewSource = ((CollectionViewSource)(this.FindResource("project_taskViewSource")));
                if (project_taskViewSource != null)
                {
                    //Bad code to clear out ViewSource. I did this to avoid an error.
                    List <project_task> list = ProjectTaskDB.project_task.Where(IT => IT.id_company == 999).ToList();
                    project_taskViewSource.Source = list;
                }
            }
            catch //(Exception ex)
            {
                //Do thing to avoid error showing for small reasons.
            }
        }
コード例 #22
0
        private void CopyOrchardTicketsToSuiteCRM(TicketContext context, CopyOrchardProjectToSuiteViewModel.ProjectIdentifiers syncSettings)
        {
            if (syncSettings.OrchardCollaborationProjectId == null)
            {
                throw new ArgumentNullException("OrchardCollaborationProjectId must not be null");
            }

            if (string.IsNullOrEmpty(syncSettings.SuiteCRMId))
            {
                throw new ArgumentNullException("SuiteCRMId must not be null");
            }

            var orchardTickets = this.searchTicketService.SearchByDatabase(new PagerParametersWithSortFields()
            {
                PageSize = 0
            }, new PostedTicketSearchViewModel {
                ProjectId = syncSettings.OrchardCollaborationProjectId
            });
            List <project_task> suiteCRMTasks = new List <project_task>();

            if (!string.IsNullOrEmpty(syncSettings.SuiteCRMId))
            {
                suiteCRMTasks.AddRange(context.ProjectTaskUnitOfWork.GetProjectTasks(syncSettings.SuiteCRMId));
            }

            foreach (var ticket in orchardTickets)
            {
                var suiteCRMTaskPart = ticket.As <SuiteCRMTaskPart>();

                if (suiteCRMTaskPart == null)
                {
                    continue;
                }

                TicketPart ticketPart = ticket.As <TicketPart>();
                ContentItemPermissionPart permissionPart = ticket.As <ContentItemPermissionPart>();

                if (ticketPart == null)
                {
                    continue;
                }

                if (!syncSettings.SyncSubTasks && ticketPart.Record.Parent != null)
                {
                    continue;
                }

                project_task suiteCRMProjectTask = null;

                if (!string.IsNullOrEmpty(suiteCRMTaskPart.ExternalId))
                {
                    suiteCRMProjectTask = suiteCRMTasks.FirstOrDefault(c => c.id == suiteCRMTaskPart.ExternalId);
                }

                if (suiteCRMProjectTask == null)
                {
                    suiteCRMProjectTask            = new project_task();
                    suiteCRMProjectTask.project_id = syncSettings.SuiteCRMId;
                    context.ProjectTaskUnitOfWork.Add(suiteCRMProjectTask);
                }

                CommonPart commonPart = ticketPart.As <CommonPart>();
                DateTime?  lastOrchardTicketChangeDate = commonPart.ModifiedUtc ?? commonPart.CreatedUtc;
                if (!syncSettings.DoNotOverrideNewerValues ||
                    suiteCRMProjectTask.date_modified == null ||
                    (lastOrchardTicketChangeDate.HasValue &&
                     suiteCRMProjectTask.date_modified.Value <= lastOrchardTicketChangeDate.Value))
                {
                    this.Copy(ticketPart, permissionPart, suiteCRMProjectTask, context);
                    context.ProjectTaskUnitOfWork.Save();
                }

                suiteCRMTaskPart.ExternalId   = suiteCRMProjectTask.id;
                suiteCRMTaskPart.LastSyncTime = DateTime.UtcNow;
                suiteCRMTaskPart.TaskType     = SuiteCRMTaskPart.SuiteCRMProjectTaskTypeValue;
                this.services.ContentManager.Publish(ticket.ContentItem);
            }
        }
コード例 #23
0
ファイル: EventCosting.xaml.cs プロジェクト: mercaditu/ERP
        private void btnPlaceProject_Click(object sender, RoutedEventArgs e)
        {
            //using (ProjectDB db = new ProjectDB())
            //{
            project project = new project();

            contact contact = EventDB.contacts.Where(x => x.id_contact == sbxContact.ContactID).FirstOrDefault();

            project.id_contact = contact.id_contact;

            project.IsSelected     = true;
            project.id_branch      = CurrentSession.Id_Branch;
            project.name           = txtName.Text;
            project.est_start_date = timestampCalendar.SelectedDate;
            project.est_end_date   = timestampCalendar.SelectedDate;
            project.priority       = 0;

            project_event project_costing = project_costingViewSource.View.CurrentItem as project_event;

            if (project_costing != null)
            {
                foreach (project_event_variable project_event_variable in project_costing.project_event_variable.Where(a => a.is_included == true))
                {
                    item item = project_event_variable.item;
                    if (item != null && item.id_item > 0 && item.is_autorecepie)
                    {
                        project_task project_task = new project_task();
                        project_task.status = Status.Project.Pending;
                        //project_task.project = project;
                        project_task.id_item          = project_event_variable.id_item;
                        project_task.item_description = project_event_variable.item.name;
                        project_task.code             = project_event_variable.item.code;
                        project_task.quantity_est     = ((project_event_variable.adult_consumption) + (project_event_variable.child_consumption));
                        project_task.unit_cost_est    = get_Price(contact, IDcurrencyfx, project_event_variable.item, entity.App.Modules.Sales);


                        if (item.item_recepie.Count() > 0)
                        {
                            foreach (item_recepie_detail item_recepie_detail in item.item_recepie.FirstOrDefault().item_recepie_detail)
                            {
                                project_task Subproject_task = new project_task();

                                Subproject_task.code             = item_recepie_detail.item.code;
                                Subproject_task.item_description = item_recepie_detail.item.name;
                                Subproject_task.id_item          = item_recepie_detail.item.id_item;
                                Subproject_task.items            = item_recepie_detail.item;
                                project_task.status = Status.Project.Pending;
                                Subproject_task.RaisePropertyChanged("item");
                                if (item_recepie_detail.quantity > 0)
                                {
                                    Subproject_task.quantity_est = (decimal)item_recepie_detail.quantity * project_task.quantity_est;
                                }
                                project_task.child.Add(Subproject_task);
                            }
                        }


                        project.project_task.Add(project_task);
                    }
                    else
                    {
                        project_task project_task = new project_task();
                        project_task.status = Status.Project.Pending;
                        //project_task.project = project;
                        project_task.id_item          = project_event_variable.id_item;
                        project_task.item_description = project_event_variable.item.name;
                        project_task.code             = project_event_variable.item.code;
                        project_task.quantity_est     = ((project_event_variable.adult_consumption) + (project_event_variable.child_consumption));
                        project_task.unit_cost_est    = get_Price(contact, IDcurrencyfx, project_event_variable.item, entity.App.Modules.Sales);
                        project.project_task.Add(project_task);
                    }
                }

                foreach (project_event_fixed per_event_service in project_costing.project_event_fixed.Where(a => a.is_included == true))
                {
                    item item = per_event_service.item;
                    if (item != null && item.id_item > 0 && item.is_autorecepie)
                    {
                        project_task project_task = new project_task();
                        project_task.status = Status.Project.Pending;
                        //project_task.project = project;
                        project_task.id_item          = per_event_service.id_item;
                        project_task.item_description = per_event_service.item.name;
                        project_task.code             = per_event_service.item.code;
                        project_task.quantity_est     = per_event_service.consumption;
                        project_task.unit_cost_est    = get_Price(contact, IDcurrencyfx, per_event_service.item, entity.App.Modules.Sales);


                        foreach (item_recepie_detail item_recepie_detail in item.item_recepie.FirstOrDefault().item_recepie_detail)
                        {
                            project_task Subproject_task = new project_task();

                            Subproject_task.code             = item_recepie_detail.item.name;
                            Subproject_task.item_description = item_recepie_detail.item.name;
                            Subproject_task.id_item          = item_recepie_detail.item.id_item;
                            Subproject_task.items            = item_recepie_detail.item;
                            Subproject_task.RaisePropertyChanged("item");
                            if (item_recepie_detail.quantity > 0)
                            {
                                Subproject_task.quantity_est = (decimal)item_recepie_detail.quantity * project_task.quantity_est;
                            }



                            project_task.child.Add(Subproject_task);
                        }
                        project.project_task.Add(project_task);
                    }
                    else
                    {
                        project_task project_task = new project_task();
                        project_task.status = Status.Project.Pending;
                        //project_task.project = project;
                        project_task.id_item          = per_event_service.id_item;
                        project_task.item_description = per_event_service.item.name;
                        project_task.code             = per_event_service.item.code;
                        project_task.quantity_est     = per_event_service.consumption;
                        project_task.unit_cost_est    = get_Price(contact, IDcurrencyfx, per_event_service.item, entity.App.Modules.Sales);
                        project.project_task.Add(project_task);
                    }
                }
                item _item = project_costing.item;
                if (_item != null && _item.id_item > 0 && _item.is_autorecepie)
                {
                    project_task _project_task = new project_task();
                    _project_task.status = Status.Project.Pending;
                    //_project_task.project = project;
                    _project_task.id_item          = project_costing.id_item;
                    _project_task.item_description = project_costing.item.name;
                    _project_task.code             = project_costing.item.code;
                    _project_task.quantity_est     = 1;
                    _project_task.unit_cost_est    = get_Price(contact, IDcurrencyfx, project_costing.item, entity.App.Modules.Sales);



                    foreach (item_recepie_detail item_recepie_detail in _item.item_recepie.FirstOrDefault().item_recepie_detail)
                    {
                        project_task Subproject_task = new project_task();

                        Subproject_task.code             = item_recepie_detail.item.name;
                        Subproject_task.item_description = item_recepie_detail.item.name;
                        Subproject_task.id_item          = item_recepie_detail.item.id_item;
                        Subproject_task.items            = item_recepie_detail.item;
                        Subproject_task.RaisePropertyChanged("item");
                        if (item_recepie_detail.quantity > 0)
                        {
                            Subproject_task.quantity_est = (decimal)item_recepie_detail.quantity * _project_task.quantity_est;
                        }



                        _project_task.child.Add(Subproject_task);
                    }
                    project.project_task.Add(_project_task);
                }
                else
                {
                    project_task _project_task = new project_task();
                    _project_task.status = Status.Project.Pending;
                    //_project_task.project = project;
                    _project_task.id_item          = project_costing.id_item;
                    _project_task.item_description = project_costing.item.name;
                    _project_task.code             = project_costing.item.code;
                    _project_task.quantity_est     = 1;
                    _project_task.unit_cost_est    = get_Price(contact, IDcurrencyfx, project_costing.item, entity.App.Modules.Sales);
                    project.project_task.Add(_project_task);
                }

                project_costing.status = Status.Documents_General.Approved;

                EventDB.projects.Add(project);
                EventDB.SaveChanges();
            }
            //}
        }
コード例 #24
0
        private void Copy(TicketPart source, ContentItemPermissionPart sourcePermissionPart, project_task destination, TicketContext context)
        {
            destination.name        = source.Record.Title.Length > 50 ? source.Record.Title.Substring(0, 50) : source.Record.Title;
            destination.task_number = source.Record.Identity != null ? (int?)source.Record.Identity.Id : null;

            // status
            if (source.Record.StatusRecord != null)
            {
                var status = context.StatusList.FirstOrDefault(c => c.Id == source.Record.StatusRecord.Id);
                if (status != null)
                {
                    destination.status = status.Name;
                }
            }

            // priority
            if (source.Record.PriorityRecord != null)
            {
                var priority = context.Priorities.FirstOrDefault(c => c.Id == source.Record.PriorityRecord.Id);
                if (priority != null)
                {
                    destination.priority = priority.Name;
                }
            }

            CommonPart commonPart = source.As <CommonPart>();

            if (commonPart != null && commonPart.ModifiedUtc.HasValue)
            {
                destination.date_modified = commonPart.ModifiedUtc;
            }

            // assignee user
            destination.assigned_user_id = this.GetAssigneeUserExternalId(sourcePermissionPart);
            destination.created_by       = this.GetOwnerUserExternalId(commonPart);
        }
コード例 #25
0
ファイル: Project.cs プロジェクト: mercaditu/ERP
        public void project()
        {
            MySqlConnection conn      = new MySqlConnection(_connString);
            MySqlCommand    cmd       = new MySqlCommand();
            string          sql_count = " select" +
                                        " sum(a.count)" +
                                        " from" +
                                        " ( select count(*) as count from project union all " +
                                        "   select count(*) as count from project_category union all " +
                                        "  select count(*) as count from project_task ) a ";

            conn.Open();
            cmd.Connection  = conn;
            cmd.CommandText = sql_count;
            cmd.CommandType = CommandType.Text;
            int count = Convert.ToInt32(cmd.ExecuteScalar());

            conn.Close();

            int value = 0;

            Dispatcher.BeginInvoke((Action)(() => projectMaximum.Text = count.ToString()));
            Dispatcher.BeginInvoke((Action)(() => projectValue.Text = value.ToString()));
            Dispatcher.BeginInvoke((Action)(() => progProject.Maximum = count));
            Dispatcher.BeginInvoke((Action)(() => progProject.Value = value));

            string sql_proj_category = " SELECT * FROM project_category;";

            conn.Open();
            cmd.Connection  = conn;
            cmd.CommandText = sql_proj_category;
            cmd.CommandType = CommandType.Text;
            MySqlDataReader category_reader = cmd.ExecuteReader();

            while (category_reader.Read())
            {
                using (db db = new db())
                {
                    project_template project_template = new project_template();
                    project_template.name      = category_reader.GetString("category");
                    project_template.is_active = true;

                    db.project_template.Add(project_template);
                    db.SaveChanges();
                    value += 1;
                    Dispatcher.BeginInvoke((Action)(() => progProject.Value = value));
                    Dispatcher.BeginInvoke((Action)(() => projectValue.Text = value.ToString()));
                }
            }
            conn.Close();

            string sql_template = " SELECT project_template.*, project_category.category, item_sku.product FROM project_template "
                                  + " INNER JOIN project_category ON project_template.id_category = project_category.id"
                                  + " INNER JOIN item_sku ON project_template.id_sku = item_sku.id;";

            conn.Open();
            cmd.Connection  = conn;
            cmd.CommandText = sql_template;
            cmd.CommandType = CommandType.Text;
            MySqlDataReader template_reader = cmd.ExecuteReader();

            while (template_reader.Read())
            {
                using (db db = new db())
                {
                    project_template_detail project_template_detail = new project_template_detail();
                    string category = template_reader.GetString("category");
                    project_template_detail.id_project_template = db.project_template.Where(i => i.name == category).FirstOrDefault().id_project_template;
                    project_template_detail.code             = template_reader.GetString("task_number");
                    project_template_detail.item_description = template_reader.GetString("product");
                    if (db.items.Where(i => i.name == project_template_detail.item_description).FirstOrDefault() != null)
                    {
                        project_template_detail.id_item = db.items.Where(i => i.name == project_template_detail.item_description).FirstOrDefault().id_item;
                        if (template_reader.GetInt16("id_task_rel") == 0)
                        {
                            //no parent. do nothing
                        }
                        else
                        {
                            //has parent
                            string code = template_reader.GetString("task_number");
                            int    pos  = code.LastIndexOf('.');
                            if (pos >= 0)
                            {
                                code = code.Substring(0, pos);
                            }
                            project_template_detail.parent = db.project_template_detail.Where(p => p.code == code &&
                                                                                              p.id_project_template == project_template_detail.id_project_template)
                                                             .FirstOrDefault();
                        }
                        //Insert into Context & Save
                        db.project_template_detail.Add(project_template_detail);
                        db.SaveChanges();
                    }
                }
            }
            conn.Close();

            string sql_proj = " SELECT * FROM project";

            conn.Open();
            cmd.Connection  = conn;
            cmd.CommandText = sql_proj;
            cmd.CommandType = CommandType.Text;
            MySqlDataReader proj_reader = cmd.ExecuteReader();

            while (proj_reader.Read())
            {
                using (db db = new db())
                {
                    db.Configuration.AutoDetectChangesEnabled = false;
                    project project = new project();
                    project.id_project     = proj_reader.GetInt32("id");
                    project.est_start_date = proj_reader.GetDateTime("begin_date");

                    if (proj_reader["id_contact"] is DBNull)
                    {
                        value += 1;
                        continue;
                    }
                    else
                    {
                        project.id_contact = proj_reader.GetInt32("id_contact");
                    }

                    project.name = proj_reader.GetString("project");

                    if (project.Error == null)
                    {
                        db.projects.Add(project);
                        db.SaveChanges();
                        value += 1;
                        Dispatcher.BeginInvoke((Action)(() => progProject.Value = value));
                        Dispatcher.BeginInvoke((Action)(() => projectValue.Text = value.ToString()));
                    }
                }
            }
            conn.Close();

            string sql_proj_task = " SELECT project_task.*, project.project, item_sku.product,app_status.status FROM project_task "
                                   + " INNER JOIN project ON project_task.id_project = project.id"
                                   + " INNER JOIN item_sku ON project_task.id_sku = item_sku.id"
                                   + " INNER JOIN app_status ON project_task.id_status = app_status.id";

            conn.Open();
            cmd.Connection  = conn;
            cmd.CommandText = sql_proj_task;
            cmd.CommandType = CommandType.Text;
            MySqlDataReader proj_task_reader = cmd.ExecuteReader();


            while (proj_task_reader.Read())
            {
                using (db db = new db())
                {
                    project_task project_task = new project_task();
                    string       project      = proj_task_reader.GetString("project");
                    project_task.id_project = db.projects.Where(i => i.name == project).FirstOrDefault().id_project;
                    project_task.code       = proj_task_reader.GetString("task_number");

                    string product = proj_task_reader.GetString("product");
                    if (db.items.Where(i => i.name == product).FirstOrDefault() != null)
                    {
                        project_task.item_description = db.items.Where(i => i.name == product).FirstOrDefault().name;
                        project_task.id_item          = db.items.Where(i => i.name == product).FirstOrDefault().id_item;
                        if (proj_task_reader.GetString("status") == "Aprobado")
                        {
                            project_task.status = Status.Project.Approved;
                        }
                        else if (proj_task_reader.GetString("status") == "Pendiente")
                        {
                            project_task.status = Status.Project.Pending;
                        }

                        if (!(proj_task_reader["qty"] is DBNull))
                        {
                            project_task.quantity_est = proj_task_reader.GetInt16("qty");
                        }



                        if (proj_task_reader.GetInt16("id_task_rel") == 0)
                        {
                            //no parent. do nothing
                        }
                        else
                        {
                            //has parent
                            string code = proj_task_reader.GetString("task_number");
                            //logic to have children

                            if (project_task.quantity_est == null)
                            {
                                var pos = code.LastIndexOf('.');
                                if (pos >= 0)
                                {
                                    code = code.Substring(0, pos);
                                    project_task.parent = db.project_task.Where(p => p.code == code &&
                                                                                p.id_project == project_task.id_project
                                                                                ).FirstOrDefault();
                                }
                            }
                            else
                            {
                                project_task.parent = db.project_task.Where(p => p.code == code &&
                                                                            p.id_project == project_task.id_project
                                                                            ).FirstOrDefault();
                            }
                        }

                        //if (project_task.Error == null)
                        //{
                        db.project_task.Add(project_task);
                        //}
                    }
                    else
                    {
                    }



                    string sql_task = "SELECT * FROM project_task_dimension inner join app_dimension on app_dimension.id=project_task_dimension.id_dimension inner join project_task on project_task.id=project_task_dimension.id_task where id_task=" + proj_task_reader.GetInt32("id");
                    try
                    {
                        MySqlConnection conntask = new MySqlConnection(_connString);
                        MySqlCommand    cmdtask  = new MySqlCommand();
                        conntask.Open();
                        cmdtask.Connection  = conntask;
                        cmdtask.CommandText = sql_task;
                        cmdtask.CommandType = CommandType.Text;
                        MySqlDataReader task_reader = cmdtask.ExecuteReader();
                        while (task_reader.Read())
                        {
                            project_task_dimension project_task_dimension = new project_task_dimension();
                            string name = task_reader.GetString("dimension");
                            if (db.app_dimension.Where(x => x.name == name).FirstOrDefault() != null)
                            {
                                project_task_dimension.id_dimension   = db.app_dimension.Where(x => x.name == name).FirstOrDefault().id_dimension;
                                project_task_dimension.project_task   = project_task;
                                project_task_dimension.value          = task_reader.GetInt32("value");
                                project_task_dimension.id_measurement = db.app_measurement.FirstOrDefault().id_measurement;
                                if (project_task_dimension.Error == null)
                                {
                                    db.project_task_dimension.Add(project_task_dimension);
                                }
                            }
                        }
                        task_reader.Close();
                        cmdtask.Dispose();
                        conntask.Close();
                    }
                    catch (Exception ex)
                    { throw ex; }


                    IEnumerable <DbEntityValidationResult> validationresult = db.GetValidationErrors();
                    if (validationresult.Count() == 0)
                    {
                        try
                        {
                            db.SaveChanges();
                        }
                        catch (Exception ex)
                        {
                            throw ex;
                        }
                        value += 1;
                        Dispatcher.BeginInvoke((Action)(() => progProject.Value = value));
                        Dispatcher.BeginInvoke((Action)(() => projectValue.Text = value.ToString()));
                    }
                }
            }
            cmd.Dispose();
            conn.Close();
        }