/// <summary> /// The post. /// </summary> /// <param name="officeNumber"> /// The office number. /// </param> /// <param name="holiday"> /// The holiday. /// </param> /// <returns> /// The <see cref="HttpResponseMessage"/>. /// </returns> public HttpResponseMessage Post(string officeNumber, Holiday holiday) { AccessControl.VerifyUserAccessToOffice(officeNumber); if (string.IsNullOrEmpty(officeNumber) || string.IsNullOrEmpty(holiday.Description)) { return(Request.CreateResponse(HttpStatusCode.PreconditionFailed, "Invalid Holiday..!!!")); } try { var officeHoliday = new OfficeHoliday { HolidayDate = DateTime.Parse(holiday.Date), OfficeNum = officeNumber, Description = holiday.Description }; // Check for duplicate entries IList <OfficeHoliday> existingHolidays = this.it2Business.GetAllHolidaysForOffice(officeNumber); IList <OfficeHoliday> results = existingHolidays.Where(d => d.HolidayDate == officeHoliday.HolidayDate).ToList(); if (results.Count == 0) { officeHoliday.OfficeNum = officeNumber; this.it2Business.SaveHoliday(officeHoliday); var response = Request.CreateResponse(HttpStatusCode.OK, "Holiday Created"); return(response); } return(Request.CreateResponse(HttpStatusCode.BadRequest, "Holiday Already Exists")); } catch (Exception ex) { var msg = string.Format("Post(officeNumber = {0} {1} {2}", officeNumber, "\n", ex); return(HandleExceptions.LogExceptions(msg, Logger, ex)); } }
public void Run(params string[] args) { IEnumerable <OfficeHoliday> toshowHolidays = null; IEnumerable <Tenant> toshowTenant = null; IEnumerable <Extension> toshowExtension = null; PhoneSystem ps = PhoneSystem.Root; switch (args[1]) { case "setofficetime": if (args[2] == "office") { //set tenant data var tenant = ps.GetTenant(); tenant.Hours = UpdateSchedule(tenant.Hours, args[3], args.Skip(4)); tenant.Save(); toshowTenant = new Tenant[] { tenant }; } else { var dn = PhoneSystem.Root.GetDNByNumber(args[2]) as Extension; //valid only for extension object dn.Hours = UpdateSchedule(dn.Hours, args[3], args.Skip(4)); dn.Save(); toshowExtension = new Extension[] { dn }; } break; case "setbreaktime": if (args[2] == "office") { //set tenant data var tenant = ps.GetTenant(); tenant.BreakTime = UpdateSchedule(tenant.BreakTime, args[3], args.Skip(4)); tenant.Save(); toshowTenant = new Tenant[] { tenant }; } else { var dn = PhoneSystem.Root.GetDNByNumber(args[2]) as Extension; //valid only for extension object dn.BreakTime = UpdateSchedule(dn.BreakTime, args[3], args.Skip(4)); dn.Save(); toshowExtension = new Extension[] { dn }; } break; case "removeholiday": { using (var holiday = ps.GetTenant().GetOfficeHolidays().GetDisposer(x => x.Name == args[2]).ExtractFirstOrDefault()) { holiday.Delete(); Console.WriteLine($"{holiday.Name} deleted"); return; } } case "setholiday": { bool hasendtime = args.Length > 4; var holiday = ps.GetTenant().GetOfficeHolidays().GetDisposer(x => x.Name == args[2]).ExtractFirstOrDefault(); var paramsStart = args[3].Split('='); var datestart = paramsStart[0].Split('-'); TimeSpan?startspan = paramsStart.Length > 1 ? TimeSpan.Parse(paramsStart[1]) : (TimeSpan?)null; string[] dateend = null; TimeSpan?endspan = null; if (hasendtime) { var paramsEnd = args[4].Split('='); dateend = paramsEnd[0].Split('-'); endspan = paramsStart.Length > 1 ? TimeSpan.Parse(paramsEnd[1]) : (TimeSpan?)null; } if (holiday == null) { if (!hasendtime) { holiday = ps.GetTenant().CreateOfficeHoliday( args[2], byte.Parse(datestart[2]), byte.Parse(datestart[1]), ushort.Parse(datestart[0]), startspan); } else { holiday = ps.GetTenant().CreateOfficeHoliday( args[2], byte.Parse(datestart[2]), byte.Parse(datestart[1]), ushort.Parse(datestart[0]), startspan, byte.Parse(dateend[2]), byte.Parse(dateend[1]), ushort.Parse(dateend[0]), endspan ); } } else { holiday.Day = byte.Parse(datestart[2]); holiday.Month = byte.Parse(datestart[1]); holiday.Year = ushort.Parse(datestart[0]); holiday.TimeOfStartDate = startspan.Value; if (hasendtime) { holiday.DayEnd = byte.Parse(dateend[2]); holiday.MonthEnd = byte.Parse(dateend[1]); holiday.YearEnd = ushort.Parse(dateend[0]); holiday.TimeOfEndDate = endspan.Value; } } holiday.Save(); toshowHolidays = new OfficeHoliday[] { holiday }; } break; case "show": if (args.Length > 2) { switch (args[2]) { case "office": toshowTenant = new Tenant[] { ps.GetTenant() }; break; case "dn": toshowExtension = args.Length > 3 ? new Extension[] { ps.GetDNByNumber(args[3]) as Extension } : ps.GetExtensions(); break; case "holidays": toshowHolidays = args.Length > 3 ? ps.GetTenant().GetOfficeHolidays().GetDisposer(x => x.Name == args[3]) : ps.GetTenant().GetOfficeHolidays().GetDisposer(); break; default: throw new NotImplementedException($"Invalid argument {args[2]} for 'show' action"); } } else { toshowTenant = new Tenant[] { ps.GetTenant() }; toshowExtension = ps.GetExtensions(); toshowHolidays = ps.GetTenant().GetOfficeHolidays().GetDisposer(); } break; default: throw new NotImplementedException($"Invalid action {args[1]}"); } if (toshowTenant != null) { foreach (var a in toshowTenant) { PrintSchedule("OfficeHours", a.Hours); PrintSchedule("BreakTime", a.BreakTime); } } if (toshowExtension != null) { foreach (var a in toshowExtension) { Console.WriteLine($"Extension - {a.Number}"); PrintSchedule("OfficeHours", a.Hours); PrintSchedule("BreakTime", a.BreakTime); } } if (toshowHolidays != null) { foreach (var a in toshowHolidays) { Console.WriteLine($"holiday - {a.Name}"); Console.WriteLine($" start:{a.Year:0000}-{a.Month:00}-{a.Day:00}={a.TimeOfStartDate}"); if (a.DayEnd != 0 || a.MonthEnd != 0) { Console.WriteLine($" end:{a.YearEnd:0000}-{a.MonthEnd:00}-{a.DayEnd:00}={a.TimeOfEndDate}"); } } } }