예제 #1
0
        public static bool CopyDataFromTemplate(int projectId, DateTime currDate, int currHeaderId)
        {
            var filtered = LabourTemplate.GetTemplate(projectId, currDate);

            if (filtered.Count > 0)
            {
                Project project = Project.GetProject(projectId);

                foreach (var src in filtered)
                {
                    int entryId = SqlInsert(currHeaderId, src.EmpNum, null, null, null, null, null, project.Billable, false, src.WorkClassCode, null, null, null);

                    foreach (var tc in TimeCode.SubList(TimeCode.EnumValueType.Hours))
                    {
                        decimal?billRate = ProjectWorkClass.GetBillRate(projectId, tc.MatchId, src.WorkClassCode);
                        LabourTimeDetail.SqlInsert(entryId, tc.MatchId, billRate, null, null);
                    }

                    foreach (var tc in TimeCode.SubList(TimeCode.EnumValueType.Dollars))
                    {
                        LabourTimeDetail.SqlInsert(entryId, tc.MatchId, null, null, null);
                    }
                }
                return(true);
            }

            return(false);
        }
        public override async System.Threading.Tasks.Task <SyncResult> Receive(Guid token)
        {
            try
            {
                ProjectWorkClass.Refresh();
                using (HttpClient client = new HttpClient())
                {
                    client.Init(token);

                    HttpResponseMessage response = await client.GetAsync($"api/ProjectWorkClasses?companyId={CompanyId}");

                    if (response.IsSuccessStatusCode)
                    {
                        UpdateStatus(EnumTableSyncStatus.Receiving);

                        List <ProjectWorkClass> list = await response.Content.ReadAsAsync <List <ProjectWorkClass> >();

                        list.ForEach(x =>
                        {
                            string sql = $"insert ProjectWorkClass(MatchId, CompanyId, ProjectId, WorkClassCode, RegularBillRate, OvertimeBillRate, DoubletimeBillRate, TravelBillRate, Schedulable, CeilingCost, RegularHours, TravelHours, InSync) " +
                                         $"values({x.MatchId}, {x.CompanyId}, {x.ProjectId}, '{x.WorkClassCode}', {StrEx.ValueOrNull(x.RegularBillRate)}, {StrEx.ValueOrNull(x.OvertimeBillRate)}, {StrEx.ValueOrNull(x.DoubleTimeBillRate)}, {StrEx.ValueOrNull(x.TravelBillRate)}," +
                                         $" '{x.Schedulable}', {StrEx.ValueOrNull(x.CeilingCost)}, {StrEx.ValueOrNull(x.RegularHours)}, {StrEx.ValueOrNull(x.TravelHours)}, 1)";
                            MobileCommon.ExecuteNonQuery(sql);
                        });

                        UpdateStatus(EnumTableSyncStatus.CompleteReceive);
                        return(new SyncResult {
                            Successful = true
                        });
                    }
                    throw new Exception($"Response StatusCode={response.StatusCode}");
                }
            }
            catch (Exception e)
            {
                UpdateStatus(EnumTableSyncStatus.ErrorInReceive);
                return(new SyncResult {
                    Successful = false, Task = TableName, Message = e.Message
                });
            }
        }
예제 #3
0
        public static List <LabourTemplate> GetTemplate(int projectId, DateTime currDate)
        {
            var codeList = ProjectWorkClass.ListForProject(projectId).Where(x => x.Schedulable == true).Select(x => x.WorkClassCode);

            return(ListForProject(projectId).Where(x => (x.StartDate == null || x.StartDate < currDate) && (x.EndDate == null || x.EndDate > currDate) && codeList.Contains(x.WorkClassCode)).ToList());
        }