Esempio n. 1
0
 public HttpResponseMessage Get(string EID, DateTime startDate, DateTime endDate)
 {
     try
     {
         using (ebuilderEntities entities = new ebuilderEntities())
         {
             var allLeaves = entities.leavs.Where(l => l.EID == EID && (DateTime.Compare(startDate, l.date) < 0 && DateTime.Compare(l.date, endDate) < 0)).ToList();
             var entity    = new List <leavWithStatusAndName>();
             foreach (leav l in allLeaves)
             {
                 foreach (approval app in entities.approvals.Where(a => a.LID == l.LID).ToList())
                 {
                     if (app.status == "accepted")
                     {
                         var levStatusName = new leavWithStatusAndName(l);
                         entity.Add(levStatusName); //select only the accepted leaves
                     }
                 }
             }
             return(Request.CreateResponse(HttpStatusCode.OK, entity));
         }
     }
     catch (Exception ex)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
     }
 }
        public HttpResponseMessage GetManaged(string ManagerID, DateTime startDate, DateTime endDate)
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    var manager = entities.employees.FirstOrDefault(e => e.EID == ManagerID);
                    if (manager == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "No manager exists with the given EID"));
                    }

                    entities.Entry(manager).Collection("employee1").Load();

                    var entity = new List <attendanceWithWorkingHours>();

                    foreach (var emp in manager.employee1)
                    {
                        var attList = entities.attendances.Where(a => a.EID == emp.EID && (DateTime.Compare(startDate, a.date) < 0 && DateTime.Compare(a.date, endDate) <= 0)).ToList();
                        foreach (var a in attList)
                        {
                            var attWithWH = new attendanceWithWorkingHours(a);
                            entity.Add(attWithWH);
                        }
                    }
                    return(Request.CreateResponse(HttpStatusCode.OK, entity));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
Esempio n. 3
0
 public HttpResponseMessage Post([FromBody] Login login)
 {
     using (ebuilderEntities entities = new ebuilderEntities())
     {
         var emp = entities.employees.Where(e => e.email == login.email).FirstOrDefault();
         if (emp != null)
         {
             if (string.Compare(Crypto.Hash(login.password), emp.password) == 0)
             {
                 entities.Entry(emp).Collection("employees").Load();
                 var employeeData = new AccessView(emp);
                 var response     = Request.CreateResponse(HttpStatusCode.OK, employeeData);
                 response.Headers.Location = new Uri("http://localhost:61355/api/Employees/" + emp.EID);
                 return(response);
             }
             else
             {
                 var response = Request.CreateResponse(HttpStatusCode.NotFound, new AccessView(new employee()));
                 return(response);
             }
         }
         else
         {
             return(Request.CreateResponse(HttpStatusCode.NotFound, new AccessView(new employee())));
         }
     }
 }
Esempio n. 4
0
        /// <summary>
        /// Add an approval
        /// </summary>
        /// <param name="appr"></param>
        /// <returns></returns>
        public HttpResponseMessage Post([FromBody] approval appr)
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    var entity = entities.approvals.FirstOrDefault(a => a.ManagerID == appr.ManagerID && a.LID == appr.LID);
                    if (entity != null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Approval already available with given datails"));
                    }

                    appr.status = "pending";
                    entities.approvals.Add(appr);
                    entities.SaveChanges();
                    var message = Request.CreateResponse(HttpStatusCode.OK, appr);
                    message.Headers.Location = new Uri(Request.RequestUri + appr.APID.ToString());
                    return(message);
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Update the status of an approval
        /// </summary>
        /// <param name="id"></param>
        /// <param name="appr"></param>
        /// <returns></returns>
        public HttpResponseMessage Put(int id, [FromBody] approval appr)
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    var entity = entities.approvals.FirstOrDefault(a => a.APID == id);

                    if (entity == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Approval with APID " + id.ToString() + " not found"));
                    }
                    else
                    {
                        entity.status = appr.status.ToLower();
                        entities.SaveChanges();
                        return(Request.CreateResponse(HttpStatusCode.OK, entity));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
Esempio n. 6
0
        /// <summary>
        /// Update time, date, activity or status of an existing task
        /// </summary>
        /// <param name="id"></param>
        /// <param name="t"></param>
        /// <returns></returns>
        public HttpResponseMessage Put(int id, [FromBody] task t)
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    var entity = entities.tasks.FirstOrDefault(tsk => tsk.TID == id);

                    if (entity == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Task with TID " + id.ToString() + " not found"));
                    }
                    else
                    {
                        entity.time     = t.time;
                        entity.date     = t.date;
                        entity.activity = t.activity;
                        entity.status   = t.status;


                        entities.SaveChanges();
                        return(Request.CreateResponse(HttpStatusCode.OK, entity));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
Esempio n. 7
0
        /// <summary>
        /// Update the maxAllowed number of leaves for a leave type
        /// </summary>
        /// <param name="jobCategory"></param>
        /// <param name="leaveCategory"></param>
        /// <param name="leaveType"></param>
        /// <returns></returns>
        public HttpResponseMessage Put(string jobCategory, string leaveCategory, [FromBody] leave_type leaveType)
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    var entity = entities.leave_type.FirstOrDefault(lt => lt.jobCategory == jobCategory && lt.leaveCategory == leaveCategory);

                    if (entity == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Leave type " + leaveCategory + "for" + jobCategory + " not found"));
                    }
                    else
                    {
                        entity.maxAllowed = leaveType.maxAllowed;

                        entities.SaveChanges();
                        return(Request.CreateResponse(HttpStatusCode.OK, entity));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
Esempio n. 8
0
        public leavWithStatusAndName(leav leave)
        {
            using (ebuilderEntities entities = new ebuilderEntities())
            {
                this.LID           = leave.LID;
                this.EID           = leave.EID;
                this.date          = leave.date.Date;
                this.reason        = leave.reason;
                this.jobCategory   = leave.jobCategory;
                this.leaveCategory = leave.leaveCategory;


                var entity = entities.approvals.Where(a => a.LID == this.LID).Select(ap => ap.status).ToList();
                if (entity.Any(e => e == "rejected"))
                {
                    this.status = "rejected";
                }
                else if (entity.Any(e => e == "pending"))
                {
                    this.status = "pending";
                }
                if (entity.All(e => e == "accepted"))
                {
                    this.status = "accepted";
                }

                var emp = entities.employees.FirstOrDefault(e => e.EID == this.EID);
                this.fName = emp.fName;
                this.lName = emp.lName;
            }
        }
        /// <summary>
        /// Update appointmnet time, date and end time of a dutyleave by providing DLID
        /// </summary>
        /// <param name="id"></param>
        /// <param name="dutyLeave"></param>
        /// <returns></returns>
        public HttpResponseMessage Put(int id, [FromBody] duty_leave dutyLeave)
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    var entity = entities.duty_leave.FirstOrDefault(dl => dl.DLID == id);

                    if (entity == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Duty Leave with DLID " + id.ToString() + " not found"));
                    }
                    else
                    {
                        entity.date            = dutyLeave.date;
                        entity.appointmentTime = dutyLeave.appointmentTime;
                        entity.endTime         = dutyLeave.endTime;

                        entities.SaveChanges();
                        return(Request.CreateResponse(HttpStatusCode.OK, entity));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
Esempio n. 10
0
        /// <summary>
        /// Update the date, leaveCategory and reason by providing LID
        /// </summary>
        /// <param name="id"></param>
        /// <param name="leave"></param>
        /// <returns></returns>
        public HttpResponseMessage Put(int id, [FromBody] leav leave)
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    var entity = entities.leavs.FirstOrDefault(l => l.LID == id);

                    if (entity == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Leave with LID " + id.ToString() + " not found"));
                    }
                    else
                    {
                        entity.date          = leave.date;
                        entity.leaveCategory = leave.leaveCategory;
                        entity.reason        = leave.reason;

                        entities.SaveChanges();
                        return(Request.CreateResponse(HttpStatusCode.OK, entity));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
Esempio n. 11
0
        /// <summary>
        /// Update the details of employee
        /// </summary>
        /// <param name="id"></param>
        /// <param name="emp"></param>
        /// <returns></returns>
        public HttpResponseMessage Put(string id, [FromBody] employee emp)
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    var entity = entities.employees.FirstOrDefault(e => e.EID == id);

                    if (entity == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Employee with EID " + id + " not found"));
                    }
                    else
                    {
                        entity.fName       = emp.fName;
                        entity.lName       = emp.lName;
                        entity.street      = emp.street;
                        entity.homeNo      = emp.homeNo;
                        entity.city        = emp.city;
                        entity.gender      = emp.gender;
                        entity.jobCategory = emp.jobCategory;

                        entities.SaveChanges();
                        return(Request.CreateResponse(HttpStatusCode.OK, entity));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
        /// <summary>
        /// Add an dutyleave. One dutyleave is allowed for one employee in a single day
        /// </summary>
        /// <param name="dutyLeave"></param>
        /// <returns></returns>
        public HttpResponseMessage Post([FromBody] duty_leave dutyLeave)
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    if (dutyLeave.EID == null || dutyLeave.location == null || dutyLeave.date == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Some fieds are empty"));
                    }

                    if (DateTime.Compare(dutyLeave.date, DateTime.Today) < 0 || TimeSpan.Compare(dutyLeave.appointmentTime, dutyLeave.endTime) >= 0)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid date or time"));
                    }
                    var entity = entities.duty_leave.FirstOrDefault(dl => dl.EID == dutyLeave.EID && dl.date == dutyLeave.date);
                    if (entity != null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Duty leave for given EID and date alredy exists"));
                    }

                    entities.duty_leave.Add(dutyLeave);
                    entities.SaveChanges();
                    var message = Request.CreateResponse(HttpStatusCode.OK, dutyLeave);
                    message.Headers.Location = new Uri(Request.RequestUri + dutyLeave.DLID.ToString());
                    return(message);
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
Esempio n. 13
0
        public HttpResponseMessage PutPassword(changePasswordCredential credential)
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    var entity = entities.employees.FirstOrDefault(e => e.EID == credential.EID);
                    if (entity == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "No employee exists with the given EID"));
                    }
                    if (string.Compare(entity.password, Crypto.Hash(credential.oldPassword)) == 0)
                    {
                        entity.password = Crypto.Hash(credential.newPassword);

                        entities.SaveChanges();
                        return(Request.CreateResponse(HttpStatusCode.OK, "Change Success"));
                    }
                    else
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Wrong Password"));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
        /// <summary>
        /// Add an attendance to the database
        /// </summary>
        /// <param name="att"></param>
        /// <returns></returns>
        public HttpResponseMessage Post([FromBody] attendance att)
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    if (DateTime.Compare(DateTime.Today, att.date.Date) < 0)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Attendance for future dates are not allowed"));
                    }
                    if (att.EID == null || att.checkIn == null || att.checkOut == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Some fields are empty"));
                    }
                    var entity = entities.attendances.FirstOrDefault(a => a.EID == att.EID && a.date == att.date);
                    if (entity != null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Attendance the given EID and date already exists."));
                    }

                    entities.attendances.Add(att);
                    entities.SaveChanges();
                    var message = Request.CreateResponse(HttpStatusCode.OK, att);
                    message.Headers.Location = new Uri(Request.RequestUri + att.AID.ToString());
                    return(message);
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, att.ToString(), ex));
            }
        }
Esempio n. 15
0
        /// <summary>
        /// Add an employee
        /// </summary>
        /// <param name="emp"></param>
        /// <returns></returns>
        public HttpResponseMessage Post([FromBody] employee emp)
        {
            try
            {
                if (emp.EID == null || emp.email == null || emp.fName == null || emp.lName == null || emp.jobCategory == null || emp.gender == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Some fields are empty"));
                }
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    var entity = entities.employees.FirstOrDefault(e => e.EID == emp.EID || e.email == emp.email);
                    if (entity != null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Employee with the given details already exists"));
                    }

                    emp.password = Crypto.Hash(emp.password);
                    entities.employees.Add(emp);
                    entities.SaveChanges();
                    var message = Request.CreateResponse(HttpStatusCode.Created, emp);
                    message.Headers.Location = new Uri(Request.RequestUri + emp.EID);
                    return(message);
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
Esempio n. 16
0
 public HttpResponseMessage ResetPassword(forgotPasswordCredential credential)
 {
     try
     {
         using (ebuilderEntities entities = new ebuilderEntities())
         {
             var entity = entities.employees.FirstOrDefault(e => e.email == credential.email);
             if (entity == null)
             {
                 return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Bad Credentials"));
             }
             if (entity.activationCode == credential.verificationCode)
             {
                 entity.password = Crypto.Hash(credential.newPassword);
                 entities.SaveChanges();
                 return(Request.CreateResponse(HttpStatusCode.OK, "Reset Success"));
             }
             else
             {
                 return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Bad Crededntials"));
             }
         }
     }
     catch (Exception ex)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
     }
 }
        /// <summary>
        /// Get the duty leave by providing DLID
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public HttpResponseMessage Get(int id)
        {
            using (ebuilderEntities entities = new ebuilderEntities())
            {
                var entity = entities.duty_leave.FirstOrDefault(dl => dl.DLID == id);
                if (entity != null)
                {
                    dutyLeaveWithName dlName = new dutyLeaveWithName();
                    dlName.DLID            = entity.DLID;
                    dlName.EID             = entity.EID;
                    dlName.date            = entity.date;
                    dlName.appointmentTime = entity.appointmentTime;
                    dlName.endTime         = entity.endTime;
                    dlName.location        = entity.location;
                    dlName.purpose         = entity.purpose;

                    employee emp = entities.employees.FirstOrDefault(e => e.EID == entity.EID);
                    dlName.fName = emp.fName;
                    dlName.lName = emp.lName;

                    return(Request.CreateResponse(HttpStatusCode.OK, dlName));
                }
                else
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "DutyLeave with the DLID " + id.ToString() + " not Found"));
                }
            }
        }
Esempio n. 18
0
        /// <summary>
        /// Delete a leave by giving the LID
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public HttpResponseMessage Delete(int id)
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    var entity = entities.leavs.FirstOrDefault(l => l.LID == id);
                    if (entity != null)
                    {
                        var approvals = entities.approvals.Where(a => a.LID == id).ToList();
                        approvals.ForEach(a => entities.approvals.Remove(a));

                        entities.leavs.Remove(entity);
                        entities.SaveChanges();
                        return(Request.CreateResponse(HttpStatusCode.OK, new { Message = "Deleted" }));
                    }
                    else
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "No Leave with the LID " + id.ToString() + " to delete"));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
Esempio n. 19
0
        public HttpResponseMessage GetManaged(string ManagerID)
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    var manager = entities.employees.FirstOrDefault(e => e.EID == ManagerID);

                    if (manager == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "No Manager exists for the given EID"));
                    }
                    entities.Entry(manager).Collection("employee1").Load();

                    var entity = new List <leavWithStatusAndName>();
                    foreach (var emp in manager.employee1)
                    {
                        var empLeaves = entities.leavs.Where(e => e.EID == emp.EID).ToList();
                        foreach (leav l in empLeaves)
                        {
                            var leavNameStatus = new leavWithStatusAndName(l);
                            entity.Add(leavNameStatus);
                        }
                    }

                    return(Request.CreateResponse(HttpStatusCode.OK, entity));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
Esempio n. 20
0
        /// <summary>
        /// Add a tracking by providing EID and location details
        /// </summary>
        /// <param name="trackWithEID"></param>
        /// <returns></returns>
        public HttpResponseMessage Post([FromBody] trackingWithEID trackWithEID)
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    var DLID = entities.duty_leave.FirstOrDefault(dl => dl.EID == trackWithEID.EID && dl.date.Year == DateTime.Now.Year &&
                                                                  dl.date.Month == DateTime.Now.Month && dl.date.Day == DateTime.Now.Day).DLID;
                    tracking newTracking = new tracking();
                    newTracking.DLID      = DLID;
                    newTracking.latitude  = trackWithEID.latitude;
                    newTracking.longitude = trackWithEID.longitude;
                    newTracking.time      = new TimeSpan(DateTime.Now.Hour + 5, DateTime.Now.Minute + 30, DateTime.Now.Second);

                    entities.trackings.Add(newTracking);
                    entities.SaveChanges();
                    var message = Request.CreateResponse(HttpStatusCode.OK, newTracking);
                    message.Headers.Location = new Uri(Request.RequestUri + trackWithEID.TRID.ToString());
                    return(message);
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
Esempio n. 21
0
        /// <summary>
        /// Get the approvals by ManagerID or LID or status. All parameters are optional
        /// </summary>
        /// <param name="LID"></param>
        /// <param name="ManagerID"></param>
        /// <param name="status"></param>
        /// <returns></returns>
        public HttpResponseMessage Get(int LID = 0, string ManagerID = "all", string status = "all")
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    string parameters = "";
                    parameters += LID == 0 ? "0" : "1";
                    parameters += ManagerID == "all" ? "0" : "1";
                    parameters += status == "all" ? "0" : "1";

                    var entity = new List <approval>();

                    switch (parameters)
                    {
                    case "000":
                        entity = entities.approvals.ToList();
                        break;

                    case "001":
                        entity = entities.approvals.Where(a => a.status == status).ToList();
                        break;

                    case "010":
                        entity = entities.approvals.Where(a => a.ManagerID == ManagerID).ToList();
                        break;

                    case "011":
                        entity = entities.approvals.Where(a => a.ManagerID == ManagerID && a.status == status).ToList();
                        break;

                    case "100":
                        entity = entities.approvals.Where(a => a.LID == LID).ToList();
                        break;

                    case "101":
                        entity = entities.approvals.Where(a => a.LID == LID && a.status == status).ToList();
                        break;

                    case "110":
                        entity = entities.approvals.Where(a => a.LID == LID && a.ManagerID == ManagerID).ToList();
                        break;

                    case "111":
                        entity = entities.approvals.Where(a => a.LID == LID && a.ManagerID == ManagerID && a.status == status).ToList();
                        break;
                    }

                    var approvalsViewList = new List <approvalView>();
                    entity.ForEach(e => approvalsViewList.Add(new approvalView(e)));
                    return(Request.CreateResponse(HttpStatusCode.OK, approvalsViewList));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
        public HttpResponseMessage GetWeekly()
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    var allDutyLeaves = entities.duty_leave.Where(l => l.date.Year == DateTime.Now.Year).ToList();
                    var dutyLeavePercentageByWeeklyDay = new appliedLeavesPercentView();
                    for (int dayOfWeek = 1; dayOfWeek <= 7; dayOfWeek++)
                    {
                        switch (dayOfWeek)
                        {
                        case 1:
                            int leaveCountMonday = allDutyLeaves.Where(l => l.date.DayOfWeek == DayOfWeek.Monday).ToList().Count;
                            dutyLeavePercentageByWeeklyDay.Monday = Math.Round((((double)leaveCountMonday) / allDutyLeaves.Count * 100), 2);
                            break;

                        case 2:
                            int leaveCountTuesday = allDutyLeaves.Where(l => l.date.DayOfWeek == DayOfWeek.Tuesday).ToList().Count;
                            dutyLeavePercentageByWeeklyDay.Tuesday = Math.Round((((double)leaveCountTuesday) / allDutyLeaves.Count * 100), 2);
                            break;

                        case 3:
                            int leaveCountWednesday = allDutyLeaves.Where(l => l.date.DayOfWeek == DayOfWeek.Wednesday).ToList().Count;
                            dutyLeavePercentageByWeeklyDay.Wednesday = Math.Round((((double)leaveCountWednesday) / allDutyLeaves.Count * 100), 2);
                            break;

                        case 4:
                            int leaveCountThursday = allDutyLeaves.Where(l => l.date.DayOfWeek == DayOfWeek.Thursday).ToList().Count;
                            dutyLeavePercentageByWeeklyDay.Thursday = Math.Round((((double)leaveCountThursday) / allDutyLeaves.Count * 100), 2);
                            break;

                        case 5:
                            int leaveCountFriday = allDutyLeaves.Where(l => l.date.DayOfWeek == DayOfWeek.Friday).ToList().Count;
                            dutyLeavePercentageByWeeklyDay.Friday = Math.Round((((double)leaveCountFriday) / allDutyLeaves.Count * 100), 2);
                            break;

                        case 6:
                            int leaveCountSaturday = allDutyLeaves.Where(l => l.date.DayOfWeek == DayOfWeek.Saturday).ToList().Count;
                            dutyLeavePercentageByWeeklyDay.Saturday = Math.Round((((double)leaveCountSaturday) / allDutyLeaves.Count * 100), 2);
                            break;

                        case 7:
                            int leaveCountSunday = allDutyLeaves.Where(l => l.date.DayOfWeek == DayOfWeek.Sunday).ToList().Count;
                            dutyLeavePercentageByWeeklyDay.Sunday = Math.Round((((double)leaveCountSunday) / allDutyLeaves.Count * 100), 2);
                            break;
                        }
                    }
                    return(Request.CreateResponse(HttpStatusCode.OK, dutyLeavePercentageByWeeklyDay));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
Esempio n. 23
0
        public HttpResponseMessage GetLeaves(string EID)
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    var         jCategory      = entities.employees.FirstOrDefault(e => e.EID == EID).jobCategory;
                    var         allLeavesTypes = entities.leave_type.Where(lt => lt.jobCategory == jCategory).ToList();
                    List <leav> leavesApplied;
                    int         leaveTakenCount = 0;

                    foreach (var lt in allLeavesTypes)
                    {
                        switch (lt.leaveCategory)
                        {
                        case "casual":
                        case "medical":
                            leavesApplied = entities.leavs.Where(l => l.EID == EID && l.leaveCategory == lt.leaveCategory && l.date.Year == DateTime.Now.Year).ToList();
                            foreach (var l in leavesApplied)
                            {
                                if (entities.approvals.Where(a => a.LID == l.LID).All(a => a.status == "accepted"))
                                {
                                    leaveTakenCount++;
                                }
                            }
                            lt.maxAllowed   = lt.maxAllowed - leaveTakenCount;
                            leaveTakenCount = 0;
                            break;

                        case "short leave":
                        case "half day":
                            leavesApplied = entities.leavs.Where(l => l.EID == EID && l.leaveCategory == lt.leaveCategory && l.date.Month == DateTime.Now.Month).ToList();
                            foreach (var l in leavesApplied)
                            {
                                if (entities.approvals.Where(a => a.LID == l.LID).All(a => a.status == "accepted"))
                                {
                                    leaveTakenCount++;
                                }
                            }
                            lt.maxAllowed   = lt.maxAllowed - leaveTakenCount;
                            leaveTakenCount = 0;
                            break;
                        }
                    }
                    return(Request.CreateResponse(HttpStatusCode.OK, allLeavesTypes));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
Esempio n. 24
0
 /// <summary>
 /// Get the approval by APID
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
 public HttpResponseMessage Get(int id)
 {
     using (ebuilderEntities entities = new ebuilderEntities())
     {
         var entity = entities.approvals.FirstOrDefault(a => a.APID == id);
         if (entity != null)
         {
             return(Request.CreateResponse(HttpStatusCode.OK, entity));
         }
         else
         {
             return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Approal with the APID " + id.ToString() + " not Found"));
         }
     }
 }
Esempio n. 25
0
 /// <summary>
 /// Get the list of contacts by EID
 /// </summary>
 /// <param name="EID"></param>
 /// <returns></returns>
 public HttpResponseMessage Get(string EID)
 {
     try
     {
         using (ebuilderEntities entities = new ebuilderEntities())
         {
             var entity = entities.contacts.Where(c => c.EID == EID).ToList();
             return(Request.CreateResponse(HttpStatusCode.Accepted, entity));
         }
     }
     catch (Exception ex)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
     }
 }
Esempio n. 26
0
 /// <summary>
 /// Get an employee's details by giving EID
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
 public HttpResponseMessage Get(string id)
 {
     using (ebuilderEntities entities = new ebuilderEntities())
     {
         var entity = entities.employees.FirstOrDefault(e => e.EID == id);
         if (entity != null)
         {
             return(Request.CreateResponse(HttpStatusCode.OK, entity));
         }
         else
         {
             return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Employee with the EID " + id + " not Found"));
         }
     }
 }
Esempio n. 27
0
 /// <summary>
 /// Add an contact
 /// </summary>
 /// <param name="con"></param>
 /// <returns></returns>
 public HttpResponseMessage Post(contact con)
 {
     try
     {
         using (ebuilderEntities entities = new ebuilderEntities())
         {
             entities.contacts.Add(con);
             entities.SaveChanges();
             return(Request.CreateResponse(HttpStatusCode.Created, con));
         }
     }
     catch (Exception ex)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
     }
 }
Esempio n. 28
0
        public HttpResponseMessage PostEx([FromBody] leav leave)
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    if (DateTime.Compare(leave.date, DateTime.Today.AddDays(-30)) < 0)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "The date should be within last 30 days."));
                    }

                    //Check whether the a leave eixsts for the fiven date
                    var entity = entities.leavs.FirstOrDefault(l => l.EID == leave.EID && l.date == leave.date);
                    if (entity != null)
                    {
                        return(Request.CreateResponse(HttpStatusCode.BadRequest, "Leave Already exists"));
                    }

                    //get the jobCategory for the leave
                    leave.jobCategory = entities.employees.FirstOrDefault(e => e.EID == leave.EID).jobCategory;

                    //Check whether the leaveCategory exists
                    var maxLeaves = entities.leave_type.FirstOrDefault(lt => lt.leaveCategory == leave.leaveCategory && lt.jobCategory == leave.jobCategory).maxAllowed;
                    if (maxLeaves == 0)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Incompatible leave type"));
                    }

                    //check whether the maximum allowed leaves for the period has been taken
                    var leavesTaken = entities.leavs.Where(l => l.EID == leave.EID && l.leaveCategory == leave.leaveCategory && l.date.Year == leave.date.Year).Count();
                    if (leavesTaken >= maxLeaves)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "No leaves available"));
                    }

                    entities.leavs.Add(leave);
                    entities.SaveChanges();

                    return(Request.CreateResponse(HttpStatusCode.Created, leave));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
        /// <summary>
        /// Get Attendance by AID
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public HttpResponseMessage Get(int id)
        {
            using (ebuilderEntities entities = new ebuilderEntities())
            {
                var entity = entities.attendances.FirstOrDefault(a => a.AID == id);
                if (entity != null)
                {
                    attendanceWithWorkingHours att = new attendanceWithWorkingHours(entity);

                    return(Request.CreateResponse(HttpStatusCode.OK, att));
                }
                else
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Attendance with AID " + id.ToString() + " not found"));
                }
            }
        }
        /// <summary>
        /// Get the attendance by date or EID, all parameters are optional
        /// </summary>
        /// <param name="date"></param>
        /// <param name="EID"></param>
        /// <returns></returns>
        public HttpResponseMessage Get(DateTime?date = null, string EID = "all")
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    string parameters = "";
                    parameters += date == null ? "0" : "1";
                    parameters += EID == "all" ? "0" : "1";

                    var entity = new List <attendance>();

                    switch (parameters)
                    {
                    case "00":
                        entity = entities.attendances.ToList();
                        break;

                    case "01":
                        entity = entities.attendances.Where(a => a.EID == EID).ToList();
                        break;

                    case "10":
                        entity = entities.attendances.Where(a => a.date == date).ToList();
                        break;

                    case "11":
                        entity = entities.attendances.Where(a => a.date == date && a.EID == EID).ToList();
                        break;
                    }

                    List <attendanceWithWorkingHours> attList = new List <attendanceWithWorkingHours>();

                    foreach (var a in entity)
                    {
                        attendanceWithWorkingHours att = new attendanceWithWorkingHours(a);
                        attList.Add(att);
                    }
                    return(Request.CreateResponse(HttpStatusCode.OK, attList));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }