/// <summary> /// Finds Effort By Id /// </summary> /// <param name="id">Injected <see cref="int"/></param> /// <returns>Instance of <see cref="Task{Effort}"/></returns> public async Task <Effort> FindEffortById(int @id) { Effort @effort = await Context.Effort .TagWith("FindEffortById") .FirstOrDefaultAsync(x => x.Id == @id); if (@effort == null) { // Log string @logData = @effort.GetType().Name + " with Id " + @id + " was not found at " + DateTime.Now.ToShortTimeString(); Logger.WriteGetItemNotFoundLog(@logData); throw new Exception(@effort.GetType().Name + " with Id " + @id + " does not exist"); } return(@effort); }
/// <summary> /// De Activates Stop /// </summary> /// <param name="viewmodel">Injected <see cref="AddEffort"/></param> /// <returns>Instance of <see cref="Task"/></returns> public async Task DeActivateStop(AddEffort @viewmodel) { Effort @effort = await this.FindFormerDayActiveEffortByApplicationUserId(@viewmodel.ApplicationUserId); if (@effort != null) { if (@effort.Kind.Id.Equals((int)EffortKinds.Stop)) { @effort.Active = false; @effort.Finish = DateTime.Now; Context.Effort.Update(@effort); // Log string @logData = @effort.GetType().Name + " with Id " + @effort.Id + " was updated at " + DateTime.Now.ToShortTimeString(); Logger.WriteUpdateItemLog(@logData); } else { throw new Exception(@effort.GetType().Name + " with Id " + @effort.Id + " can not be stopped"); } } }
/// <summary> /// De Activates Resume /// </summary> /// <param name="viewmodel">Injected <see cref="AddEffort"/></param> /// <returns>Instance of <see cref="Task"/></returns> public async Task DeActivateResume(AddEffort @viewmodel) { Effort @effort = await FindCurrentDayActiveEffortByApplicationUserId(@viewmodel.ApplicationUserId); if (@effort != null) { if (@effort.Kind.Id.Equals((int)EffortKinds.Resume) || @effort.Kind.Id.Equals((int)EffortKinds.Start)) { effort.ApplicationUser = await FindApplicationUserById(@viewmodel.ApplicationUserId); @effort.Active = false; @effort.Finish = DateTime.Now; Context.Effort.Update(@effort); // Log string @logData = @effort.GetType().Name + " with Id " + @effort.Id + " was updated at " + DateTime.Now.ToShortTimeString(); Logger.WriteUpdateItemLog(@logData); } else { throw new Exception(@effort.GetType().Name + " with Id " + @effort.Id + " can not be stoppped"); } } else { // Log string @logData = @effort.GetType().Name + " for Application User" + viewmodel.ApplicationUserId + " was not found at " + DateTime.Now.ToShortTimeString(); Logger.WriteGetItemNotFoundLog(@logData); throw new Exception(@effort.GetType().Name + " was not started"); } }
/// <summary> /// Stops /// </summary> /// <param name="viewmodel">Injected <see cref="AddEffort"/></param> /// <returns>Instance of <see cref="Task{ViewEffort}"/></returns> public async Task <ViewEffort> Stop(AddEffort @viewmodel) { await DeActivateResume(@viewmodel); Effort @effort = await AddStopEffort(@viewmodel); await Context.SaveChangesAsync(); // Log string @logData = @effort.GetType().Name + " with Id " + @effort.Id + " was added at " + DateTime.Now.ToShortTimeString(); Logger.WriteInsertItemLog(@logData); return(Mapper.Map <ViewEffort>(@effort)); }
/// <summary> /// Removes Effort By Id /// </summary> /// <param name="id">Injected <see cref="int"/></param> /// <returns>Instance of <see cref="Task"/></returns> public async Task RemoveEffortById(int @id) { try { Effort @effort = await FindEffortById(@id); Context.Effort.Remove(@effort); await Context.SaveChangesAsync(); // Log string @logData = @effort.GetType().Name + " with Id " + @effort.Id + " was removed at " + DateTime.Now.ToShortTimeString(); Logger.WriteDeleteItemLog(@logData); } catch (DbUpdateConcurrencyException) { await FindEffortById(@id); } }