示例#1
0
        public Task <IHttpActionResult> Post([FromBody] SOFTTEK.SCMS.Entity.SRA.PermitsAndAbsences activityPerAndAbs)
        {
            IHttpActionResult result = Conflict();

            try
            {
                SOFTTEK.SCMS.Foundation.Business.BusinessContext ctx = new SOFTTEK.SCMS.Foundation.Business.BusinessContext
                {
                    SecurityContext = new Foundation.Security.SecurityContext
                    {
                        DeviceID            = GetDeviceIdentifier(),
                        ClientID            = GetToken().Identifier,
                        AuthorizationTicket = GetToken().Identifier,
                        AppID = new System.Configuration.AppSettingsReader().GetValue("S_SRA_APP_idENTIFIER", typeof(string)).ToString()
                    }
                };

                SOFTTEK.SCMS.Business.SRA.PermitsAndAbsencesBO    permitsAndAbsencesBO = new Business.SRA.PermitsAndAbsencesBO(ctx);
                List <SOFTTEK.SCMS.Entity.SRA.PermitsAndAbsences> registeredActivity   = permitsAndAbsencesBO.RegisterPermitsAnsAbsences(activityPerAndAbs);
                if (registeredActivity.Count > 0)
                {
                    result = Json(registeredActivity);
                }
            }
            catch (Exception ex)
            {
                result = Error(ex);
            }

            return(Task.FromResult(result));
        }
示例#2
0
        private void ValidatePermitsAndAAbsences(SOFTTEK.SCMS.Entity.SRA.PermitsAndAbsences activityPerAndAbs)
        {
            if (activityPerAndAbs != null)
            {
                var permitsAndAbsencesActuallyInBd = GetPermitsAndAbsencesForEmployeeId(activityPerAndAbs.perabs_employee.Identifier);

                ///Validación para corroborar que no exista una solicitud en la misma fecha
                if (permitsAndAbsencesActuallyInBd.Where(a => a.perabs_start_at >= activityPerAndAbs.perabs_start_at &&
                                                         a.perabs_end_at <= activityPerAndAbs.perabs_end_at).Sum(a => a.perabs_total_hours) + activityPerAndAbs.perabs_total_hours > MAX_EFFORT_PER_DAY)
                {
                    throw new Exception("No se puede realizar esta solicitud de Permiso o ausencia, porque ya existe otra actividad programada en esta fecha.",
                                        new InvalidOperationException(string.Format("Solo se puede realizar una solicitud en una franja.")
                                                                      )
                                        );
                }

                ///Validacion fecha mayor
                if (activityPerAndAbs.perabs_start_at > activityPerAndAbs.perabs_end_at)
                {
                    throw new Exception("La fecha de inicio de la solicitud no puede ser mayor a la fecha de fin de esta.",
                                        new InvalidOperationException(string.Format("Error al procesar estas fechas.")
                                                                      )
                                        );
                }

                /// Validación cantidad de horas
                //TimeSpan daysDifference = activityPerAndAbs.perabs_end_at.Date.Subtract(activityPerAndAbs.perabs_start_at.Date);
                //int totalHoursMaxSolicitud = Convert.ToInt32(daysDifference.Ticks) * MAX_EFFORT_PER_DAY;
                //if (activityPerAndAbs.perabs_total_hours > totalHoursMaxSolicitud) {
                //    throw new Exception("Esta excediendo el numero maximo de horas que puede realizar en esta solicitud.",
                //       new InvalidOperationException(string.Format("Entre la fecha {0} y {1} se pueden soolictar maximo {2} horas, usted esta solicitando {3} por tanto esta solicitud es invalida.",
                //       activityPerAndAbs.perabs_start_at, activityPerAndAbs.perabs_end_at, totalHoursMaxSolicitud, activityPerAndAbs.perabs_total_hours)
                //       )
                //   );
                //}
                if (activityPerAndAbs.perabs_total_hours > MAX_EFFORT_PER_DAY)
                {
                    throw new Exception(string.Format("La solicitud no puede superar el maximo de {0} horas por día.", MAX_EFFORT_PER_DAY),
                                        new InvalidOperationException(string.Format("El total de horas se valida por día y no por el total de dias que solicit el permiso o la ausencia")));
                }
            }
            else
            {
                throw new Exception("No se ha podido realizar la validacion del Permiso o l asencia.",
                                    new InvalidOperationException("El permiso o la ausencia no puede ser nulo"));
            }
        }
示例#3
0
        public Task <IHttpActionResult> Put(string id, [FromBody] SOFTTEK.SCMS.Entity.SRA.PermitsAndAbsences activityPerAndAbs)
        {
            int activityID;

            IHttpActionResult result = NotFound();

            if (!int.TryParse(id, out activityID))
            {
                result = Conflict();
                return(Task.FromResult(result));
            }

            try
            {
                SOFTTEK.SCMS.Foundation.Business.BusinessContext ctx = new SOFTTEK.SCMS.Foundation.Business.BusinessContext
                {
                    SecurityContext = new Foundation.Security.SecurityContext
                    {
                        DeviceID            = GetDeviceIdentifier(),
                        ClientID            = GetToken().Identifier,
                        AuthorizationTicket = GetToken().Identifier,
                        AppID = new System.Configuration.AppSettingsReader().GetValue("S_SRA_APP_idENTIFIER", typeof(string)).ToString()
                    }
                };

                SOFTTEK.SCMS.Business.SRA.PermitsAndAbsencesBO    activitiesRegisterBO = new Business.SRA.PermitsAndAbsencesBO(ctx);
                List <SOFTTEK.SCMS.Entity.SRA.PermitsAndAbsences> updatedActivity      = activitiesRegisterBO.UpdatePermitsAnsAbsences(activityID, activityPerAndAbs);

                if (updatedActivity.Count > 0)
                {
                    result = Json(updatedActivity);
                }
            }
            catch (Exception ex)
            {
                result = Error(ex);
            }

            return(Task.FromResult(result));
        }
示例#4
0
        /// <summary>
        /// Register an activity for approval.
        /// </summary>
        /// <param name="permitsAndAbsences">permitsAndAbsences Update Model information Permits and Absences</param>
        /// <returns>Registered activity information.</returns>
        public List <SOFTTEK.SCMS.Entity.SRA.PermitsAndAbsences> UpdatePermitsAnsAbsences(long activityID, SOFTTEK.SCMS.Entity.SRA.PermitsAndAbsences permitsAndAbsences)
        {
            List <SOFTTEK.SCMS.Entity.SRA.PermitsAndAbsences> activities = new List <SOFTTEK.SCMS.Entity.SRA.PermitsAndAbsences>();

            ValidatePermitsAndAAbsences(permitsAndAbsences);

            return(context.Execute(() =>
            {
                using (dataSource = new SRADataContext(context.SecurityContext))
                {
                    dataSource.ConnectionString = "SRA";
                    dataSource.DefaultUser = System.Configuration.ConfigurationManager.AppSettings["S_APP_UID"];
                    dataSource.Initialize();

                    var result = dataSource.UpdatePermitsAndAbsences(permitsAndAbsences);
                    activities = result;
                }
                return activities;
            }, "Register an activity for approval"));
        }