public static string CheckAccountContract(ApiUser hdUser, int accountId, int contractId, DateTime date, int ticketTimeID, int projectTimeID, int projectId) { if (contractId > 0) { DataTable acTbl = bigWebApps.bigWebDesk.Data.Accounts.SelectAccountContracts(hdUser.OrganizationId, hdUser.DepartmentId, accountId, true, date, projectId, contractId); if (acTbl != null && acTbl.Rows.Count == 1) { return(acTbl.Rows[0]["Name"].ToString()); } if (ticketTimeID > 0) { DataRow row = bigWebApps.bigWebDesk.Data.Tickets.SelectTicketTimeByID(hdUser.OrganizationId, hdUser.DepartmentId, ticketTimeID); if (row != null) { Ticket_Time_Log timeEntry = new Ticket_Time_Log(row); if (timeEntry.ContractID == contractId) { return(row["ContractName"].ToString()); } } } if (projectTimeID > 0) { DataRow row = bigWebApps.bigWebDesk.Data.Project.SelectProjectTimeByID(hdUser.OrganizationId, hdUser.DepartmentId, projectTimeID); if (row != null) { ProjectTimeLog timeEntry = new ProjectTimeLog(row); if (timeEntry.ContractID == contractId) { return(row["ContractName"].ToString()); } } } throw new HttpError("Incorrect PrePaid Pack Id."); } return(string.Empty); }
public static void EditProjectTime(ApiUser User, int?AccountId, int?ProjectId, int?TechId, int TaskTypeId, DateTime?start_date, DateTime?stop_date, decimal?Hours, int HoursOffset, string NoteText, bool?is_billable, DateTime?date, int projectTimeID, int?contract_id) { if (projectTimeID <= 0) { throw new HttpError(System.Net.HttpStatusCode.NotFound, "Incorrect Project Time Id"); } ProjectTimeLog timeEntry = null; DataRow row = bigWebApps.bigWebDesk.Data.Project.SelectProjectTimeByID(User.OrganizationId, User.DepartmentId, projectTimeID); if (row == null) { throw new HttpError(System.Net.HttpStatusCode.NotFound, "Project Time Id Not Found"); } else { timeEntry = new ProjectTimeLog(row); if (timeEntry.InvoiceID > 0) { throw new HttpError("Time log has been invoiced and can not be edited."); } if (timeEntry.PaymentId > 0) { throw new HttpError("Time log has been paid and can not be edited."); } } ProjectId = ProjectId ?? timeEntry.ProjectID; if (ProjectId.Value > 0 && bigWebApps.bigWebDesk.Data.Project.SelectDetail(User.OrganizationId, User.DepartmentId, ProjectId.Value) == null) { throw new HttpError(System.Net.HttpStatusCode.NotFound, "Project Id Not Found"); } if (TaskTypeId > 0) { DataRow _rowTaskType = bigWebApps.bigWebDesk.Data.TaskType.SelectTaskType(User.OrganizationId, User.DepartmentId, TaskTypeId); if (_rowTaskType == null) { throw new HttpError(System.Net.HttpStatusCode.NotFound, "No Task Types found for TaskTypeId=" + TaskTypeId.ToString() + "."); } } else { TaskTypeId = timeEntry.TaskTypeID; } if (Hours > 999) { throw new HttpError("Hours value should be less 1000."); } if (Hours == 0) { Hours = timeEntry.Hours.Value; } DateTime startDate = DateTime.MinValue; DateTime stopDate = DateTime.MinValue; if (start_date.HasValue && start_date > DateTime.MinValue) { startDate = start_date.Value;//.AddHours(HoursOffset); } else if (timeEntry.StartTime.HasValue && timeEntry.StartTime > DateTime.MinValue) { startDate = timeEntry.StartTime.Value; } if (stop_date.HasValue && stop_date > DateTime.MinValue) { stopDate = stop_date.Value;//.AddHours(HoursOffset); } else if (startDate != DateTime.MinValue) { stopDate = startDate.AddHours((double)Hours); } else if (timeEntry.StopTime.HasValue && timeEntry.StopTime > DateTime.MinValue) { stopDate = timeEntry.StopTime.Value; } if (Hours == 0 && startDate > DateTime.MinValue && stopDate > DateTime.MinValue) { Hours = Convert.ToDecimal((stopDate - startDate).TotalHours); } DateTime dateTimeLog = timeEntry.Date.Value; if (date.HasValue && date > DateTime.MinValue) { dateTimeLog = (DateTime)date; } is_billable = is_billable ?? timeEntry.Billable; TechId = TechId ?? timeEntry.UserID; AccountId = AccountId ?? timeEntry.AccountID; NoteText = !string.IsNullOrWhiteSpace(NoteText) ? NoteText : timeEntry.Note; bigWebApps.bigWebDesk.Data.Project.UpdateTimeRecord(User.OrganizationId, projectTimeID, User.DepartmentId, ProjectId.Value, TechId.Value, TaskTypeId, dateTimeLog, Hours.Value, NoteText, startDate, stopDate, DateTime.UtcNow, User.UserId, HoursOffset, bigWebApps.bigWebDesk.Data.Logins.SelectTechHourlyRate(User.OrganizationId, User.DepartmentId, User.UserId, TaskTypeId), ProjectId.Value == -1 ? AccountId.Value : -1, is_billable.Value, contract_id ?? 0); }