Ejemplo n.º 1
0
        public MyWOData DownloadMyWODataSchema()
        {
            var data = new MyWOData();

            data.InitializeDataForSqlLiteSchema();
            return(data);
        }
Ejemplo n.º 2
0
        public MyWOData DownloadMyWOData([FromUri] DateTime?modifiedDateTime)
        {
            var data = new MyWOData();

            // we always get all WOs of this user
            // on the mobile, first we need to truncate all WO's related tables
            // before store the data returned.
            var workOrders = _workOrderRepository.GetAll()
                             .Where(w => w.Assignment.Users.Any(u => u.Id == this._workContext.CurrentUser.Id))
                             //.Include(w => w.WorkOrderTasks)
                             //.Include(w => w.Assignment)
                             //.Include(w => w.WorkOrderLabors)
                             //.Include(w => w.WorkOrderItems)
                             //.Include(w => w.WorkOrderServiceItems)
                             //.Include(w => w.WorkOrderMiscCosts)
                             .ToList();

            // Get My WOs
            data.WorkOrder = workOrders.Select(w => w.ToModel()).ToList();

            // Get My Assignments
            var assignments = workOrders.Select(w => w.Assignment).ToList();

            data.Assignment     = assignments.Select(a => a.ToModel()).ToList();
            data.AssignmentUser = new List <AssignmentUserModel>();
            foreach (var a in assignments)
            {
                foreach (var u in a.Users)
                {
                    data.AssignmentUser.Add(new AssignmentUserModel {
                        AssignmentId = a.Id, UserId = u.Id
                    });
                }
            }

            // Get My WorkOrderLabors
            data.WorkOrderLabor = new List <WorkOrderLaborModel>();
            foreach (var wo in workOrders)
            {
                foreach (var wol in wo.WorkOrderLabors)
                {
                    data.WorkOrderLabor.Add(wol.ToModel());
                }
            }

            // Get My WorkOrderTasks
            data.WorkOrderTask = new List <WorkOrderTaskModel>();
            foreach (var wo in workOrders)
            {
                foreach (var wot in wo.WorkOrderTasks)
                {
                    data.WorkOrderTask.Add(wot.ToModel());
                }
            }

            // Get My WorkOrderItems
            data.WorkOrderItem = new List <WorkOrderItemModel>();
            foreach (var wo in workOrders)
            {
                foreach (var woi in wo.WorkOrderItems)
                {
                    data.WorkOrderItem.Add(woi.ToModel());
                }
            }

            // Get My WorkOrderServiceItems
            data.WorkOrderServiceItem = new List <WorkOrderServiceItemModel>();
            foreach (var wo in workOrders)
            {
                foreach (var wos in wo.WorkOrderServiceItems)
                {
                    data.WorkOrderServiceItem.Add(wos.ToModel());
                }
            }

            // Get My WorkOrderMiscCosts
            data.WorkOrderMiscCost = new List <WorkOrderMiscCostModel>();
            foreach (var wo in workOrders)
            {
                foreach (var wom in wo.WorkOrderMiscCosts)
                {
                    data.WorkOrderMiscCost.Add(wom.ToModel());
                }
            }

            // Get My Comments
            data.Comment = new List <CommentModel>();
            foreach (var wo in workOrders)
            {
                var comments = _commentRepository.GetAll()
                               .Where(c => c.EntityId == wo.Id && c.EntityType == EntityType.WorkOrder)
                               .ToList();
                foreach (var comment in comments)
                {
                    data.Comment.Add(comment.ToModel());
                }
            }

            // Get My Sites
            var sites = _siteService.GetSites(this._workContext.CurrentUser, modifiedDateTime);

            data.Site = sites.Select(s => s.ToModel()).ToList();

            // Get My Assets
            var assets = _siteService.GetAssets(this._workContext.CurrentUser, modifiedDateTime);

            data.Asset = assets.Select(s => s.ToModel()).ToList();

            // Get My Locations
            var locations = _siteService.GetLocations(this._workContext.CurrentUser, modifiedDateTime);

            data.Location = locations.Select(s => s.ToModel()).ToList();

            // Get all ValueItemCategory
            data.ValueItemCategory = _valueItemCategoryRepository.GetAll()
                                     .Where(v => v.ModifiedDateTime >= modifiedDateTime).ToList()
                                     .Select(v => v.ToModel()).ToList();

            // Get all ValueItem
            data.ValueItem = _valueItemRepository.GetAll()
                             .Where(v => v.ModifiedDateTime >= modifiedDateTime).ToList()
                             .Select(v => v.ToModel()).ToList();

            // Get all Code
            data.Code = _codeRepository.GetAll()
                        .Where(v => v.ModifiedDateTime >= modifiedDateTime).ToList()
                        .Select(v => v.ToModel()).ToList();

            // Get My Teams
            var teams = _siteService.GetTeams(this._workContext.CurrentUser, modifiedDateTime);

            data.Team = teams.Select(t => t.ToModel()).ToList();

            // Get My Users
            var users = _siteService.GetUsers(this._workContext.CurrentUser, modifiedDateTime);

            data.User = users.Select(s => s.ToModel()).ToList();

            // Get My Technicians
            var technicians = _siteService.GetTechnicians(this._workContext.CurrentUser, modifiedDateTime);

            data.Technician = technicians.Select(s => s.ToModel()).ToList();

            // Get TeamTechnician
            data.TeamTechnician = new List <TeamTechnicianModel>();
            foreach (var team in teams)
            {
                foreach (var technician in team.Technicians)
                {
                    data.TeamTechnician.Add(new TeamTechnicianModel
                    {
                        TeamId       = team.Id,
                        TechnicianId = technician.Id
                    });
                }
            }

            // Get all Craft
            data.Craft = _craftRepository.GetAll()
                         .Where(v => v.ModifiedDateTime >= modifiedDateTime).ToList()
                         .Select(v => v.ToModel()).ToList();

            // Get all UnitOfMeasure
            data.UnitOfMeasure = _unitOfMeasureRepository.GetAll()
                                 .Where(v => v.ModifiedDateTime >= modifiedDateTime).ToList()
                                 .Select(v => v.ToModel()).ToList();

            // Get all MeterGroup
            var meterGroups = _meterGroupRepository.GetAll()
                              .Where(v => v.ModifiedDateTime >= modifiedDateTime).Include(v => v.MeterLineItems).ToList();

            data.MeterGroup = meterGroups.Select(v => v.ToModel()).ToList();

            // Get all Meter
            data.Meter = _meterRepository.GetAll()
                         .Where(v => v.ModifiedDateTime >= modifiedDateTime).ToList()
                         .Select(v => v.ToModel()).ToList();

            // Get My MeterLineItems
            data.MeterLineItem = new List <MeterLineItemModel>();
            foreach (var mg in meterGroups)
            {
                foreach (var m in mg.MeterLineItems)
                {
                    data.MeterLineItem.Add(m.ToModel());
                }
            }

            // Get My Points
            var points = _siteService.GetPoints(this._workContext.CurrentUser, modifiedDateTime);

            data.Point = points.Select(s => s.ToModel()).ToList();

            // Get My PointMeterLineItems
            data.PointMeterLineItem = new List <PointMeterLineItemModel>();
            foreach (var p in points)
            {
                foreach (var pm in p.PointMeterLineItems)
                {
                    data.PointMeterLineItem.Add(pm.ToModel());
                }
            }

            // Get My Reading
            data.Reading = new List <ReadingModel>();

            data.ModifiedDateTime = DateTime.UtcNow;
            return(data);
        }