예제 #1
0
 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);
 }
예제 #2
0
파일: Projects.cs 프로젝트: evgeniynet/API5
        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);
        }